Sencha Touch按钮对Tap事件没有响应

时间:2012-11-06 12:10:39

标签: button controller sencha-touch-2

我是sencha touch的新手,我的按钮有一个奇怪的问题。我正在使用mvc,我有:

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;
    }
};

问题是按钮不起作用,按下时它什么都不做,我有两个完全相同但有不同数据的FormPanel,每个都有一个控制器,就像我展示的那个但是有不同的点击功能中的代码,它们工作。我注意到,当我看到以chrome填充的脚本时,Adduser.js不存在,所以我想这就是它无法正常工作的原因,但我不确定为什么它不加载。 顺便说一句,我将控制器添加到App.js。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

将您的参考更改为

refs:{
        userButton: '#adduserButton'
    }

和控制为

control: {
        userButton: {

希望这有助于你

答案 1 :(得分:0)

使用

更新控制器代码
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');
                }
            }
        }
    });
    },
}
});

答案 2 :(得分:0)

添加

controllers: [
    'App.controller.Adduser',

],

在应用