通过自定义数据填充组合ExtJS

时间:2012-11-16 19:39:29

标签: arrays extjs datareader

我有Combo ExtJS,应该由Spring MVC的数据填充 - 就像这样:

    var LongRecord = Ext.data.Record.create([
        {name: 'id', mapping: 'id'}
    ]);

     var comboStore = new MyDataStore.data.Store({
        proxy: new MyDataStore.data.DwrProxy({
            invoker: function(params, arg, cb) {
                // data from server
                AssetScreener.getEntityOwnerIds(cb);
                console.log("invoker has been called");     
            }
        }),

        reader: new Ext.data.ArrayReader({}, LongRecord),
        listeners: {
               'load': function(s, recs) { 
                alert("!");

            }
         }
    });

组合代码:

new Ext.form.ComboBox({
  store:  comboStore,
  typeAhead: true,
  triggerAction: 'all',
  editable: false,
  width: 100,
  displayField: 'id',
  valueField: 'id'
});

问题是我从服务器获得的数据看起来像这样

'5','0',["1","8","133"]

我需要对数组["1","8","133"]进行切片并在组合中显示(更改后端java代码是不可理解的方式)。

在执行此代码后的组合中,我看到了三个空项。需要提示。

1 个答案:

答案 0 :(得分:1)

在加载事件中,切片后您将从["1","8","133"]参数中获取recs。使用store.loadData()将当前商店记录替换为正确的商店记录。

您可以从数组中创建一个模型来为商店提供这样的服务:

var i, item, feed = [];
for(i=0; i<array.length; i++)
{
   item = array[i];
   feed.push(Ext.create('com.your.Model', {
       id : item
   }));
}
store.loadData(feed);