Как связать массив с arrystore, чтобы заполнить комбо в extjs - PullRequest
6 голосов
/ 12 апреля 2011

У меня есть массив как

var cars = new Array('audi','benz','citron','nissan','alto');

Я хочу добавить эти данные в массив, как показано ниже

 var myStore = new Ext.data.ArrayStore({
        data   : cars ,
        fields : ['names']
    });

Вкл. Привязка этого хранилища массива к комбо

 var myCombo = new Ext.form.ComboBox({
        store: myStore ,
        displayField: 'name',
        valueField: 'name',
        typeAhead: true,
        mode: 'local',
        forceSelection: true,
        triggerAction: 'all',
        emptyText: 'Select a state...',
        selectOnFocus: true,

    });

Комбо показывает только первую букву каждого слова в массиве как a, b, c, n, a

Как правильно отобразить комбо, так как используемый мной массив заполняется программно и затем связывается с массивом

Ответы [ 2 ]

8 голосов
/ 12 апреля 2011

В качестве альтернативы, если вы просто передадите массив в качестве конфигурации хранилища, это также будет работать (при условии последней версии):

new Ext.form.ComboBox({
    store: ['Audi', 'Benz', 'Citron', 'Nissan', 'Alto']
});

Обратите внимание, что вам не нужно указывать displayField / valueField, если этодело.

4 голосов
/ 12 апреля 2011

Формат данных, который использует ArrayStore, представляет собой массив массивов.Переформатирование данных вашего магазина следующим образом должно позволить ему работать:

var cars = [['audi'], ['benz'], ['citron'], ['nissan'], ['alto']];

Преобразование из вашего формата в требуемый формат достаточно прост:

for ( var i = 0, c = cars.length; i < c; i++ ) {
    cars[i] = [cars[i]];
}
...