Как динамически установить значение метки поля в ExtJS?

#extjs

#extjs

Вопрос:

Я хочу добиться ситуации, когда мои значения fieldLabel поступают из хранилища. В хранилище есть нужные мне значения, но я не могу понять, как установить эти значения в fieldLabel.

Допустим, у меня есть какой-то блок:

 items: [{
  name: 'someName',
  fieldLabel: 'someFieldLabel'
}]
  

someName в поле name поступает из хранилища и работает, как ожидалось.

Значение someFieldLabel в поле fieldLabel присутствует в хранилище, но оно показывает буквально ‘someFieldLabel’, а не значение из хранилища.

Есть предложения, как заставить это работать динамически со значениями из хранилища?

Ответ №1:

Ниже приведен код из скрипта о том, как динамически изменять метку поля.

 Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create('Ext.panel.Panel', {
            title: 'Dynamic Set Field Label',
            layout: 'vbox',
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'textfield',
                itemId: 'lblItem',
                fieldLabel: 'Testing',
                margin: '0 0 20 0'
            }, {
                xtype: 'button',
                text: 'Set Field Label',
                handler: function (btn) {
                    // alert('button presssed');
                    Ext.ComponentQuery.query('#lblItem')[0].setFieldLabel('New Label');
                }
            }]
        })
    }
});
  

Вы можете увидеть, как это работает здесь.

Примечание: Используя Ext.ComponentQuery, он вернет массив объектов, удовлетворяющих требованиям запроса. Вам нужно указать индекс, чтобы получить один объект.

 store.load({
  callback: function (records) {
    Ext.ComponentQuery.query('#lblItem')
  }
})
  

Ответ №2:

 items: [{
  itemId: 'someField'
  name: 'someName',
  fieldLabel: 'someFieldLabel'
}];
  

в функции загрузки хранилища

  var somefield = Ext.ComponentQuery.query('field[itemId=someField]');
    somefield[0].setFieldLabel('dynamic_field_label');
  

Комментарии:

1. Для запроса компонента потребуется индекс, поскольку Ext.ComponentQuery возвращает массив.