在煎茶触摸2值ext.store:与主要的阅读JSON(Reading json with key:

2019-10-16 15:29发布

我试图加载特定的JSON文件到列表视图; 但煎茶代理似乎并不理解“CurrencyName”和“价值”的密钥对。 我如何这两个值相关联成可用的数据毫无头绪。

这里的JSON:

{
    "timestamp": 1335294053,
    "base": "USD",
    "rates": {
        "AED": 3.6732,
        "AFN": 48.32,
        "ALL": 106.040001
    }
}

我的商店:

proxy: {
    type: 'ajax',
    url: 'http://localhost/CurrencyFX/latest.json',
    reader: {
        type: 'json',
        rootProperty: 'rates'
    }
},

我的模型:

Ext.define('CurrencyFX.model.Currency', {
    extend: 'Ext.data.Model',
    config: {
        fields: [ 'name', 'value' ]
    }
});

Answer 1:

你需要编写自己的JSON读者子类来完成这项工作,因为你正在处理的数据是不是数组。

值得庆幸的是,这样做是相当简单的。 这是应该做的工作:

Ext.define('Ext.data.reader.Custom', {
    extend: 'Ext.data.reader.Json',
    alias : 'reader.custom',

    getRoot: function(data) {
        if (this.rootAccessor) {
            data = this.rootAccessor.call(this, data);
        }

        var values = [],
            name;

        for (name in data) {
            values.push({
                name: name,
                value: data[name]
            });
        }

        return values;
    }
});

这将具有以下存储配置工作:

var store = Ext.create('Ext.data.Store', {
    fields: ['name', 'value'],
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: '0000.json',
        reader: {
            type: 'custom',
            rootProperty: 'rates'
        }
    }
});

注意阅读器type是现在的定制

我与您的数据本地测试这一点,它似乎工作得很好。



文章来源: Reading json with key:value in ext.store in sencha touch 2