2013-11-29 24 views
0

我已經試過這樣:ExtJS的設置FieldLabel聯合動態觸發一次

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),可以讓你編輯一組數據,而這組數據將是另一個表單(表單b)的fieldLabel。在開始時,當我從form a「編輯」fieldLabel時,它可以工作,(形式b的fieldLabel被改變),但是當從一個按鈕(ei Create按鈕)打開表單b並且編輯fieldLabel(在文本字段中的inputtin)再次形成一個formb中的fieldLabel沒有改變。

formItem = this.el.up('。x-form-item',10);變爲空。 如何解決這個問題?

謝謝。

回答

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

只需調用setText()方法。更簡單。