#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 возвращает массив.