Extjs 4使用Model加载数组数据

时间:2016-02-12 01:33:14

标签: extjs

我觉得我可能会因此而复杂化。请随时向我发送不同的方向。

我正在尝试使用模型中定义的字段(键)将只有值的记录数组(值)加载到模型对象中。

我的模特

Ext.define('MyApp.model.AppData', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'key'},
        {name: 'value'},
        {name: 'desc'},
        {name: 'index', type: 'int'},
        {name: 'type'}
    ]
});

我的商店

Ext.define('MyApp.store.AppData', {
    extend: 'Ext.data.ArrayStore',
    groupField: 'type',
    model: 'MyApp.model.AppData',
    autoload: false,
    constructor: function (config) {
        var data = [
            ['val1', 'val2', 'val3', 'val4', 'val5'],
            ['val1', 'val2', 'val3', 'val4', 'val5'],
            ...
        ];
    this.loadData(data);
    }
});

所以这里的最终目标是让商店中的数据看起来像

[
    {'key':'val1', 'value':'val2', 'desc':'val3', 'index':'val4', 'type':'val5'},
    {...},
    {...}
]

目前正在获取'me.removed is undefined'错误。我知道它与loadData()函数有关。这让我觉得我在某个地方没有正确使用它。

我可以对使用键值对格式化的数据进行硬编码......但这只是感觉不可维护和错误的方法。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用商店的数据配置:

var myModel=Ext.define('MyApp.model.AppData', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'key'},
        {name: 'value'},
        {name: 'desc'},
        {name: 'index', type: 'int'},
        {name: 'type'}
    ]
});

var myData = [
      ['val1', 'val2', 'val3', 0, 'val5'],
      ['val1', 'val2', 'val3', 1, 'val5']
];

var store = Ext.create('Ext.data.ArrayStore', {
    model:myModel,
    data:myData
});

这里是working fiddle