如何将数组绑定到arrystore以便在extjs中填充组合

Jem*_*rld 6 javascript arrays combobox extjs store

我有阵列

var cars = new Array('audi','benz','citron','nissan','alto');
Run Code Online (Sandbox Code Playgroud)

我想将此数据添加到arraystore,如下所示

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

在此数组存储绑定到组合

 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,

    });
Run Code Online (Sandbox Code Playgroud)

组合仅显示数组中每个单词的第一个字母为a,b,c,n,a

我如何正确显示组合,因为我正在使用的arry是以编程方式填充然后绑定到arraystore

Eva*_*oli 8

或者,如果您只是将数组作为存储配置传递,那么它也将起作用(假设是最新版本):

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

请注意,如果是这种情况,则无需指定displayField/valueField.


owl*_*ess 4

ArrayStore 消耗的数据格式是数组的数组。按如下方式重新格式化您的商店数据应该可以使其正常工作:

var cars = [['audi'], ['benz'], ['citron'], ['nissan'], ['alto']];
Run Code Online (Sandbox Code Playgroud)

从您的格式转换为所需的格式非常简单:

for ( var i = 0, c = cars.length; i < c; i++ ) {
    cars[i] = [cars[i]];
}
Run Code Online (Sandbox Code Playgroud)