2016-02-25 10 views
0

Поля формы не имеют метода обновления для fieldLabel, который может быть установлен только как свойство конструктора.Как динамически изменять полеLabel в extJs3

{ 
    xtype:   'textfield', 
    fieldLabel:  'Field Label Text', 
    width:   465, 
    name:   'field_1', 
    id:    'field_1', 
    labelSeparator: '', 
    allowBlank:  false, 
    value:   '' 
} 

мне удалось изменить его:

var field = Ext.getCmp("field_1"); 
field.el.parent().parent().dom.children[0].innerHTML = "new Label" 

Но он чувствует себя своего рода хак-иш.

Есть ли способ изменить ярлык?


Примечание: Я знаю, что extJs3 - это древняя история, но проект, над которым я работаю, по-прежнему использует эту версию.

ответ

2

Просто переопределять класс поля, чтобы добавить метод setFieldLabel, как показано ниже, а затем использовать

fieldObj.setFieldLabel('New Label'); 

где-нибудь в вашем приложении.

Ext.override(Ext.form.Field, { 
    setFieldLabel : function(text) { 
     if (this.rendered) { 
      this.el.up('.x-form-item', 10, true).child('.x-form-item-label').update(text); 
     } 
     this.fieldLabel = text; 
    } 
}); 

Cheers!

+0

Отлично работает! благодаря –