2

我正在尝试通过 ref 获取视图。在控制器中定义的方法内。我收到错误消息

对象 [对象对象] 没有方法“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)他们的身份:'# 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: 'userForm'
    }

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 回答