Extjs Set fieldLabel仅动态触发一次

时间:2013-11-29 00:27:30

标签: extjs

我试过这个:

Ext.override(Ext.form.Field, {
setFieldLabel: function(text) {         
    if (this.rendered) {             
        var labelSeparator = this.labelSeparator;               
        if (typeof labelSeparator == 'undefined') {                 
             if (this.ownerCt && this.ownerCt.layout && typeof
             this.ownerCt.layout.labelSeparator != 'undefined')                     
                   labelSeparator = this.ownerCt.layout.labelSeparator;                 
             else                    
                  labelSeparator = '';            
        }               
        var formItem = this.el.up('.x-form-item', 10); 
        if (formItem) {
             var label = formItem.child('.x-form-item-label'); 
             if (label)                     
                  label.update(text + labelSeparator);             
        }         
} else            
       this.fieldLabel = text;     
} 
})

但它只发射一次。 我有一个formpanel(表单a),它允许你编辑一组数据,那组数据将是另一种形式的fieldLabel(表单b)。开始时,当我从表单a“编辑”fieldLabel时,它工作,(表单b的fieldLabel被更改),但是从按钮(ei创建按钮)打开表单b,并编辑fieldLabel(在文本字段中输入)再次形成一个,形式b中的fieldLabel不会改变。

formItem = this.el.up('。x-form-item',10);变为空。 如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:0)

解:

Ext.override(Ext.form.Field, {
    setFieldLabel: function(text) {
        if (this.rendered) {
            var labelSeparator = this.labelSeparator;
            if (typeof labelSeparator == 'undefined') {
                if (this.ownerCt && this.ownerCt.layout && typeof this.ownerCt.layout.labelSeparator != 'undefined')
                    labelSeparator = this.ownerCt.layout.labelSeparator;
                else
                    labelSeparator = '';
            }
            var formItem = this.el.up('.x-form-item', 10);
            if (formItem) {
                var label = formItem.child('.x-form-item-label');
                if (label)
                    label.update(text + labelSeparator);
            } else {
                this.labelEl.update(text);
            }
        } else {
            this.fieldLabel = text;
        }
    }
});

答案 1 :(得分:0)

只需调用setText()方法即可。更简单。