Я использую ExtJS 3.4.
У меня есть структура с данными для комбинированного списка, как это:
var a = [[1,"text1"],[2,"text2"]]
Я загружаю это так:
ComboBox.store.loadData(a);
Но когда у меня есть только 1 элемент в массиве
var a = [[1,"text1"]]
тогда он вообще не загружается. Я прочитал это:
массив: массивы будут преобразованы в Ext.data.ArrayStore
внутренне, автоматически генерируя имена полей для работы со всеми данными
компоненты. Одномерный массив: (например, ['Foo', 'Bar']) A
1-мерный массив будет автоматически расширен (каждый элемент массива
будет использоваться как для комбинированного значения valueField, так и displayField)
2-мерный массив: (например, [['f', 'Foo'], ['b', 'Bar']]) для
многомерный массив, значение в индексе 0 каждого элемента будет
предполагается, что это комбо valueField, в то время как значение в индексе 1
предполагается, что это combo displayField.
Но это не объясняет, как мне загрузить массив с одним элементом. Или что угодно, массив не должен быть нужен, главное - загрузить только один элемент. Я пытался загрузить это:
Код:
[{id:1,text:"text1"}]
[[{id:1,text:"text1"}]]
{id:1,text:"text1"}
Даже при создании собственного ArrayStore:
Code:
var store = new Ext.data.ArrayStore({
autoDestroy: true,
storeId: 'Store1',
idProperty:"id",
fields: ["id","text"]);
ComboBox.store = store;
ComobBox.store.loadData([{id:1,text:"text1"}]);
Но все загружается неправильно. Либо поле со списком пусто, либо вместо текста отображается идентификатор.
Я вижу, что если я лениво инициирую комбо:
Код:
{"xtype":"combo","width":250,"fieldLabel":"my combo","value":31029,"forceSelection":true,"hiddenName":"ComboHiddenName","minChars":1,"triggerAction":"all","store":[[31029,"gdfs"]]}
тогда массив с одним элементом будет загружен успешно. На какие свойства ComboBox.store я должен обратить внимание, чтобы правильно настроить их для массива из одного элемента, который должен быть загружен правильно с помощью метода loadData?