1

私は sencha touch の初心者で、ボタンに奇妙な問題があります。私はmvcを使用しています。

ユーザービュー.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;
    }
};

問題は、ボタンが機能しないことです。ボタンを押しても何もしません。他の 2 つの FormPanels がまったく同じですが、データが異なり、それぞれに、私が示したものと同じようなコントローラーがありますが、コードが異なります。機能をタップすると、機能します。クロムにロードされているスクリプトを見ると、Adduser.js が存在しないことに気付きました。それが機能しない理由だと思いますが、ロードされない理由はわかりません。ところで、App.js にコントローラーを追加しました。

助けてくれてありがとう。

4

3 に答える 3

0

参照をに変更します

refs:{
        userButton: '#adduserButton'
    }

そして、コントロールとして

control: {
        userButton: {

これがお役に立てば幸いです

于 2012-11-06T12:24:11.503 に答える
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');
                }
            }
        }
    });
    },
}
});
于 2012-11-07T05:45:53.517 に答える
0

追加

controllers: [
    'App.controller.Adduser',

],

アプリで

于 2013-05-09T10:15:19.903 に答える