-2

我试图弄清楚如何配置一个通过 AjaxProxyStore从请求中读取原始 JSON 数字数组。GET

它要求Please associate a Model with the store, or add one or more Fields to the store.我没有模型并且没有字段,它只是一个原始 JSON 数组。ArrayStore似乎也不是正确的事情,因为它正在从文档中寻找一组数组

以下是GET请求返回的 JSON 示例:

[1,2,3,4,5,6,7,8,9,10]

这些数字代表id系统中唯一的 s,这并不重要。

我以前从未尝试过这样做,当响应是 JSON 对象数组或带有字段的 JSON 对象时,我没有遇到任何问题。

这是我已经走了多远:

Ext.define('fivestar.store.NumberStore', {
    extend: 'Ext.data.Store',

    requires: [
        'Ext.data.proxy.Ajax',
        'Ext.data.reader.Json'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            storeId: 'NumberStore',
            proxy: {
                type: 'ajax',
                reader: {
                    type: 'json'
                }
            }
        }, cfg)]);
    }
});

我已经阅读了文档,进行了广泛搜索,但我只找到了一个对数据说的答案transform并添加了field. 我也发现了这个,但它没有足够的代码来解释如何使用答案。有没有其他不那么重的方法?

我错过了什么?

4

1 回答 1

3

您可以使用 transform 方法将原始数据提升为对象:

Ext.define('MyStore', {
    extend: 'Ext.data.Store',

    proxy: {
        type: 'ajax',
        url: 'data1.json',
        reader: {
            type: 'json',
            transform: raw => raw.map(v => ({ id: v }))
        }
    }
});

var s = new MyStore();
s.load(() => {
    console.log(s.getRange().map(r => r.id));
});

在这里拉小提琴。

于 2017-08-22T21:51:28.040 回答