0

我正在尝试学习 Ext JS,因为我已经设置了一个项目,需要我了解它的一些基本部分,基本上我坚持以下几点:

我需要基于一个公共字段将两个 JSON 文件加载到同一个表中:

文件 1

{
    "data" : [{
        "id" : "12",
        "data" : {
            "field1" : "data 1-1",
            "field2" : "data 1-2",
        }
    },{
        "id" : "34",
        "data" : {
            "field1" : "data 2-1",
            "field2" : "data 2-2",
        }
    }]
}

文件 2:

{
    "otherdata" : [{
        "id" : "12",
        "stuff" : {
            "var1" : "stuff 1-1",
            "var2" : "stuff 1-2",
        },
        "morestuff" : {
            "v1" : "more 1-1",
            "v2" : "more 1-2",
            "v3" : "more 1-3"
        }
    },{
        "id" : "34",
        "stuff" : {
            "var1" : "stuff 2-1",
            "var2" : "stuff 2-2",
        },
        "morestuff" : {
            "v1" : "more 2-1",
            "v2" : "more 2-2",
            "v3" : "more 2-3"
        }
    }]
}

我想要将这些解析成这样的表:

|-----------------------------------------------------------------------------------
|    |        data         |          stuff        |           morestuff           |
|-----------------------------------------------------------------------------------
| id |  field1  |  field2  |    var1   |    var2   |    v1    |    v2    |    v3   |
|-----------------------------------------------------------------------------------
| 12 | data 1-1 | data 1-2 | stuff 1-1 | stuff 1-2 | more 1-1 | more 1-2 |more 1-3 |
| 34 | data 2-1 | data 2-2 | stuff 2-1 | stuff 2-2 | more 2-1 | more 2-2 |more 2-3 |
------------------------------------------------------------------------------------

我坚持的是以下几点:

如何加载两个JSON 文件并将它们与一个公共字段链接到一个数据存储中?

如何在数据模型中创建字段和子字段?(我可以创建单个字段,但不知道如何在这些字段中创建字段)

我的模型目前看起来像这样:

Ext.define('NS.model.Group', {
    extend: 'Ext.data.Model',
    fields: ['id','field1', 'field2', 'var1', 'var2', 'v1', 'v2', 'v3']
});
4

1 回答 1

2

对于分组标题,请查看以下示例:http ://dev.sencha.com/deploy/ext-4.0.0/examples/grid/group-header-grid.html

这将让您创建类似于您想要的标题(我认为)。

至于将两个数据存储合并到一个存储中 - 虽然在您的情况下是可能的,但我不推荐它(还)。您可以只对属于其他商店的列使用自定义渲染器函数。像这样的东西:

{ text: 'id', flex: 1, dataIndex: 'id' },
{ text: 'v1', flex: 1, dataIndex: 'id',  
  renderer: function(value) {   
    var st = Ext.getStore('Store2'),
        idx = st.findExact('id', value);
    if (idx >= 0)
      return st.getAt(idx).get('v1');
    else 
      return '-';
  }
},
于 2012-04-27T12:12:27.797 回答