EXT.JS循环遍历商店并在items数组中生成组件

时间:2012-08-28 17:36:11

标签: extjs extjs4

我正在尝试使用我商店中填充的数据向我的容器中添加一堆组件。我想遍历我的商店记录并输出标签/面板/等来显示数据。

这就是我现在循环的方式:

  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。我需要遍历我的ItemArrays存储并创建容器,然后遍历ItemArray中的Items,用Items填充这些容器。

谢谢大家!

2 个答案:

答案 0 :(得分: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
        });
    });
});​

您的商店尚未在您的示例中填充。它也会加载异步,因此会有轻微的延迟。

答案 1 :(得分: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();
    }

});