【问题标题】:Extjs Set fieldLabel dynamically fires only onceExtjs Set fieldLabel 只动态触发一次
【发布时间】:2013-11-29 00:27:29
【问题描述】:

我试过了:

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;     
} 
})

但它只触发一次。 我有一个表单面板(表单 a),可以让您编辑一组数据,而那组数据将是另一个表单(表单 b)的 fieldLabel。开始时,当我从表单 a“编辑”fieldLabel 时,它可以工作(表单 b 的 fieldLabel 已更改),但在从按钮(即创建按钮)打开表单 b 并编辑 fieldLabel(在文本字段中输入)之后再次form a,form b中的fieldLabel没有变化。

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

谢谢。

【问题讨论】:

    标签: extjs


    【解决方案1】:

    解决:

    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;
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 2021-11-28
        • 1970-01-01
        • 2020-07-23
        • 2021-03-22
        • 2015-09-07
        • 2016-11-10
        相关资源
        最近更新 更多