ExtJS:Simple Form忽略formBind

hyn*_*nek 6 javascript extjs extjs4

我有一个小问题让我疯狂了好几天.我有一个表单面板:

Ext.define('EC.view.PasswordPanel', {
    extend: 'Ext.form.Panel',
    alias: 'widget.pwdpanel',

    bodyPadding: 15,

    initComponent: function() {
        this.initialConfig = {url:'/password/'};

        this.fieldDefaults = {
            labelAlign: 'right',
            labelWidth: 135,
            msgTarget: 'side',
            allowBlank: false,
            inputType: 'password'
        };

        //this.listeners =  {
            //// circumvent broken formBind
            //validitychange: function(comp, valid) {
                //this.down('button').setDisabled(!valid);
            //}};

        this.buttons = [{
            text: 'Change',
            formBind: true,
            scope: this,
            handler: function() {
                this.submit({
                    success: function(form, action) {
                        Ext.Msg.alert(
                            'Success',
                            '<p>Password change has been scheduled successfully.</p>' +
                                EC.DELAY_NOTICE);
                            form.reset();
                    },
                    failure: function(form, action) {
                        if ('result' in action &&
                            'msg' in action.result) {
                            Ext.Msg.alert('Error', action.result.msg);
                        }
                    }
                });
            }
        }];
        this.items = [ {
            xtype: 'textfield',
            name: 'pw_old',
            fieldLabel: 'Old password'
        }, {
            xtype: 'textfield',
            name: 'pw_new1',
            id: 'pw_new1',
            fieldLabel: 'New password',
            minLength: 8,
            maxLength: 16
        }, {
            xtype: 'textfield',
            name: 'pw_new2',
            fieldLabel: 'Confirm new password',
        } ];

        this.callParent(arguments);
    }
});
Run Code Online (Sandbox Code Playgroud)

我在TabPanel中实例化一个标签:

{
            title: 'Change Password',
            items: { xtype: 'pwdpanel' },
},
Run Code Online (Sandbox Code Playgroud)

现在,验证工作完全正常,但在表单无效时未禁用"更改"按钮.要明确:当我按下它时,它不会提交,但我觉得应该禁用它?

我做错了什么吗?第二个选项卡中的另一个表单面板工作正常.

我可以使用我注释掉的监听器来规避这个问题,但我知道它应该没有用.

PS随意指出任何愚蠢/糟糕的风格,我是ExtJS的新手.

Mol*_*Man 5

这是extjs的明显错误,因为即使他们自己的例子也是如此.

但是,我找到了快速的解决方法 - 添加到initComponent行:

this.on('afterrender', function(me) {
    delete me.form._boundItems;
});
Run Code Online (Sandbox Code Playgroud)

这是小提琴.

UPDATE

该错误已在4.0.7中修复.