0

私はComboExtJSを持っていますが、これはSpringMVCからのデータで埋める必要があります-次のように:

    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コードを変更するのは望ましくありません)。

このコードが実行された後のコンボでは、3つの空のアイテムが表示されます。ヒントが必要です。

4

1 に答える 1

1

loadイベントでは、スライス後["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);
于 2012-11-17T06:04:23.217 に答える