5

ストアに入力されたデータを使用して、コンテナに多数のコンポーネントを追加しようとしています。ストアのレコードを繰り返し処理し、ラベル/パネルなどを出力してデータを表示したいと思います。

これが私が今ループしている方法です:

  initComponent: function () {
  //Create a container for each array, then in that container, 
  //create a label and wrapping panel, then add the items to the wrapping panel
  this.store = Ext.create('Ext.data.Store', {
     model: 'MyProject.model.ItemArray',
     data: []
  });
  Ext.apply(this, {
     items: [
        this.store.each(function() {
           {
              xtype:'label', text:
              'test'
           }
        })
     ]
  });

  this.callParent(arguments);
}

しかしもちろん、私はEXTJSの初心者なので、これは機能しません。これを機能させるために提供できるアドバイスやベストプラクティスのヒントをいただければ幸いです。

私のモデルItemArrayにはItemsが含まれています。ItemArrayのストアをループしてコンテナーを作成してから、ItemArray内のItemをループして、それらのコンテナーにItemを追加する必要があります。

みんな、ありがとう!

4

2 に答える 2

5

最初にストアをロードしてから、ストアのコールバックでラベルを生成する必要があります。

var me = this;
me.store.load(function(records) {
    Ext.each(records, function(record) {
        //Add a container for each record
        me.add({
            xtype: 'container',
            items: [] //your labels here
        });
    });
});​

あなたの例では、あなたの店はまだ移入されていません。また、非同期でロードされるため、わずかな遅延が発生します。

于 2012-08-28T20:33:26.070 に答える
1
Ext.define('Foo', {

    initComponent: function(){
        // assumes store is loaded with data
        var store = new Ext.data.Store(),
            items = [];

        store.each(function(rec){
            items.push({
                html: rec.get('aField')
            });
        });
        this.items = items;
        this.callParent();
    }

});
于 2012-08-28T23:01:42.393 に答える