2

私は参照によってビューを取得しようとしています。コントローラーで定義されたメソッド内。というエラーが表示されます

オブジェクト [object Object] にはメソッド「getUserForm」がありません。

これが私のビューとコントローラーです。誰かが私を助けてくれれば幸いです..

前もって感謝します。

ユーザーフォーム

Ext.define(appName + '.view.user.UserForm', {
    extend  : 'Ext.form.FieldSet',
    alias   : 'widget.userform',
    title   : 'User Form',
    instructions: 'Fill your personel information',
    iconCls : 'icon-form',
    fullscreen: true,
    config : {
        items : [{
            xtype       : 'toolbar',
            docked      : 'top',
            title       : 'Registeration Form',
            iconCls     : 'icon-form'
        }, {
            xtype       : 'textfield',
            label       : 'Name ',
            name        : 'name'            
        }, {
            xtype       : 'textfield',
            label       : 'Surname ',
            name        : 'surname'         
        }, {
            xtype       : 'passwordfield',
            label       : 'Password ',
            name        : 'password'
        }, {
            xtype       : 'toolbar',
            dock        : 'bottom',
            defaults    : {
                xtype   : 'button',
                flex    : 1
            },
            layout      : { pack : 'center' },
            items       : [{
                text    : 'Reset',
                iconCls : 'icon-refresh-32',
                ui      : 'action',
                action  : 'reset'
            }, {
                text    : 'Save',
                ui      : 'action',
                iconCls : 'icon-save-32',
                action  : 'save'
            }]
        }]
    }
});

ユーザーコントローラー

Ext.define(appName + '.controller.UserController', {
    extend      : 'Ext.app.Controller',
    stores      : [ 'Users' ],
    models      : [ 'User' ],
    views       : [ 'user.UserList', 'user.UserForm' ],
    refs        : [{
        ref     : 'userList',
        selector: 'userlist'
    }, {
        ref     : 'userForm',
        selector: 'userform'
    }],
    init        : function() {
        this.control({
            'userform button[action=save]' : {
                release : this.saveUserForm
            },
            'userform button[action=reset]' : {
                release : this.resetUserForm
            }
        });
    },
    saveUserForm : function(btn) {
//      Ext.Msg.alert('SUCCESS', 'Form is successfully saved.');
        **var form = this.getUserForm();** // ERROR!
        alert(form);
//      Ext.Msg.alert('Form Values', JSON.stringify(form.getValues(), null, 2));
    },
    resetUserForm : function(btn) {
        **var form = this.getUserForm();** // ERROR!
//      var form = btn.up('form');
        form.reset();
    }
});
4

1 に答える 1

2

refs - ページ上の主要なコンポーネントへの参照を簡単に取得できる名前付きの ComponentQuery セレクターのコレクション。

http://docs.sencha.com/touch/2-0/#!/api/Ext.ComponentQuery ("refs" で使用できるセレクターのタイプに関するものです) によると、コンポーネントは次を使用して取得できます。

1) xtype : 'panel'、'textfield' など。

2) ID : '#idOfYourComponent'

あなたの場合:

1)ユーザーフォーム

Ext.define(appName + '.view.user.UserForm', {
    拡張: 'Ext.form.FieldSet',
    xtype: 'userForm' 
    エイリアス: 'widget.userform',

ユーザーコントローラー

Ext.define(appName + '.controller.UserController', {
    拡張: 'Ext.app.Controller',
    ストア: ['ユーザー'],
    モデル: ['ユーザー'],
    ビュー: ['user.UserList', 'user.UserForm'],
    参照: {
        mySuperMegaForm: 'ユーザーフォーム'
    }

2)ユーザーフォーム

Ext.define(appName + '.view.user.UserForm', {
    拡張: 'Ext.form.FieldSet',
    id: 'userFormId' 
    エイリアス: 'widget.userform',

ユーザーコントローラー

Ext.define(appName + '.controller.UserController', {
    拡張: 'Ext.app.Controller',
    ストア: ['ユーザー'],
    モデル: ['ユーザー'],
    ビュー: ['user.UserList', 'user.UserForm'],
    参照: {
        mySuperMegaForm: '#userFormId'
    }
于 2012-06-03T19:05:19.040 に答える