2012-11-06 100 views
1

我是sencha觸摸新手,我有一個奇怪的按鈕問題。當按下Sencha觸摸按鈕沒有響應Tap事件

Adduserview.js

Ext.define('App.view.Adduserview', { 
extend: 'Ext.form.Panel', 

xtype: 'adduserview', 

requires: ['Ext.form.FieldSet','Ext.field.Select','App.store.Companies'], 

config: { 
    id: 'userform', 
    items: [ 
     { 
      xtype: 'fieldset', 
      title: 'Details', 
      items:[ 
       { 
        xtype: 'textfield', 
        name: 'userName', 
        label: 'Name' 
       }, 
       { 
        xtype: 'textfield', 
        name: 'userLastname', 
        label: 'Lastname' 
       }, 
       { 
        xtype: 'textfield', 
        name: 'userNumber', 
        label: 'Number' 
       } 
      ] 
     }, 
     { 
      xtype: 'fieldset', 
      title: 'Links', 
      items: { 
       xtype: 'selectfield', 
       label: 'Company', 
       store: Ext.create('App.store.Companies'), 
       displayField: 'companyName', 
       valueField: 'companyName' 
      } 
     }, 
     { 
      xtype: 'button', 
      text: 'Send', 
      id: 'adduserButton' 
     } 
    ] 
} 
}); 

Adduser.js

Ext.define('App.controller.Adduser', { 
extend: 'Ext.app.Controller', 

config: { 
    refs:{ 
     userform: '#userform' 
    }, 

    control: { 
     '#adduserButton': { 
      tap: function(){ 
       var valuesUser = this.getUserform().getValues(); 
       console.log(valuesUser); 
       if (notNull(valuesUser.userName) && notNull(valuesUser.userLastname) && notNull(valuesUser.userNumber)){ 
        Ext.Ajax.request({ 
         url: 'http://server.com/insertUser.php', 
         params: valuesUser, 
         method: 'post', 

         success: function(response){ 
          var text = response.responseText; 
          Ext.Msg.alert('Success', text); 
         }, 

         failure : function(response) { 
          Ext.Msg.alert('Error','Error while submitting the form'); 
          console.log(response.responseText); 
         } 
        }); 
        this.getUserform().reset(); 
       } 
       else{ 
        Ext.Msg.alert('Error', 'All the fields are necessary'); 
       } 
      } 
     } 
    } 
} 
}); 

function notNull(a) { 
    if(a!="" && !(a.match(/^\s+$/))){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
}; 

的問題是,該按鈕不起作用,它只是什麼都不做:我使用MVC,和我有,而且我有另外兩個FormPanels完全一樣的,但有不同的數據,並且他們每個人都有一個控制器,就像我展示的控制器一樣,但在tap功能中使用不同的代碼,並且它們工作正常。我注意到,當我看到在Chrome中加載的腳本時,Adduser.js不在那裏,所以我想這就是它不工作的原因,但我不知道爲什麼它不加載。 順便說一句,我將控制器添加到App.js.

感謝您的幫助。

回答

0

更改您的裁判來

refs:{ 
     userButton: '#adduserButton' 
    } 

和控制作爲

control: { 
     userButton: { 

希望這有助於你

+0

你好@Jaffer,我沒有你說什麼,但它仍然沒有工作。謝謝 – user1802827

+0

@ user1802827請確保在tap中加入alert:function()這個函數被調用 – Oxi

+0

我評論tap中的所有代碼:function(),只留下一個alert並且它沒有「alert」按下,是否正確?也許控制器無法鏈接到視圖上的按鈕,但我嘗試了幾種方法來引用按鈕... – user1802827

0

更新您的controoler代碼

Ext.define('App.controller.Adduser', { 
extend: 'Ext.app.Controller', 

config: { 
    refs:{ 
     userform: '#userform' 
    } 
    }, 

    init: function() { 
     this.control({ 
     '#adduserButton': { 
      tap: function(){ 
       var valuesUser = this.getUserform().getValues(); 
       console.log(valuesUser); 
       if (notNull(valuesUser.userName) && notNull(valuesUser.userLastname) && notNull(valuesUser.userNumber)){ 
        Ext.Ajax.request({ 
         url: 'http://server.com/insertUser.php', 
         params: valuesUser, 
         method: 'post', 

         success: function(response){ 
          var text = response.responseText; 
          Ext.Msg.alert('Success', text); 
         }, 

         failure : function(response) { 
          Ext.Msg.alert('Error','Error while submitting the form'); 
          console.log(response.responseText); 
         } 
        }); 
        this.getUserform().reset(); 
       } 
       else{ 
        Ext.Msg.alert('Error', 'All the fields are necessary'); 
       } 
      } 
     } 
    }); 
    }, 
} 
}); 
+0

嗨@Naresh,它仍然無法正常工作......但如果我實現啓動功能,它不會更有意義初始化,因爲我會在創建控制器後運行此代碼?如我錯了請糾正我。謝謝。 – user1802827

+0

總是歡迎解釋。 –

0

添加

controllers: [ 
    'App.controller.Adduser', 

], 

在應用