0

我定义了一个类“IMS.SellMgt.testForm”。当我单击“提交”按钮时,我想得到“var test = this.formPanel;”,为什么测试为空?如果我想获得 this.formPanel,我该怎么做?谢谢!

    Ext.define('IMS.SellMgt.testForm', {
    formPanel: null,
    LoadForm: function () {
            this.formPanel = new Ext.form.Panel({
            renderTo: 'form-ct',
            frame: true,
            title: 'XML Form',
            width: 300,
            items: [{
                xtype: 'fieldset',
                title: 'Contact Information',
                defaultType: 'textfield',
                items: [{
                    fieldLabel: 'First Name',
                    emptyText: 'First Name',
                    name: 'first'
                }
            ]
            }],
            buttons: [{
                text: 'Submit',
                handler: function () {
                    var test = this.formPanel;
                        }
            }]
        });
    }
});

Ext.onReady(function () {
    var frmTest = Ext.create('IMS.SellMgt.testForm', {});
    frmTest.LoadForm();
});
4

2 回答 2

0

handler是为按钮指定单击事件侦听器的更简单方法。由于它是短手,它有一些缺点。

使用handler时,函数的上下文始终是按钮。换句话说,this处理函数内部是按钮,而不是您的表单。

为了this成为您的班级,请使用指定范围的侦听器:

buttons: [{
    text: 'Submit',
    listeners: {
        click: function() {
            this.formPanel; // will work now
            ...
        },
        scope: this // this is the key
    }
}]

您还可以使用up查找表格:

handler: function() {
    var form = this.up('form');
    ...
}
于 2013-04-28T03:46:04.173 回答
0

尝试类似:

......
handler: function () {
    var test = this.findParentByType(Ext.form.FormPanel);
}
....
于 2013-04-28T03:02:48.033 回答