2012-11-06 62 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', 

], 

在应用