【问题标题】:Create custom json reader创建自定义 json 阅读器
【发布时间】:2011-12-09 06:17:00
【问题描述】:

我按照 James Clark 在following post. 中的建议创建了自定义 json 阅读器

这里是创建自定义json的代码

  Ext.define('MyReader', {
            extend: 'Ext.data.reader.Json',
            alias: 'my-json',
            read: function (object) {
                debugger;
                object.Results = Ext.decode(object.responseText);
                this.callParent([object]);
            }
        });

在商店定义中我使用自定义阅读器

var store = Ext.create('Ext.data.Store', {
//model: 'Option',
    fields: fields,
    pageSize: itemsPerPage,
    proxy: {
        type: 'ajax',
        url: getDataWithPageURL,
        **reader:Ext.create('MyReader', {root: 'Results', totalProperty: 'Total'})**
    }
});

我从客户那里收到的 json 是这样的

{"Results":["{\"BaseCurrency\":\"USD\",\"TermCurrency\":\"JPY\"}","{\"BaseCurrency\":\"USD\",\"TermCurrency\":\"JPY\"}","{\"BaseCurrency\":\"USD\",\"TermCurrency\":\"JPY\"}","{\"BaseCurrency\":\"USD\",\"TermCurrency\":\"JPY\"}"],"Total":4}

我在 ext-js.js 中收到错误 我调试了它,错误发生在 Ext.data.proxy.Server 类中 以下代码

if (success === true) {
        reader = me.getReader();
        result = reader.read(me.extractResponseData(response));
        records = result.records;

结果未定义。

请帮忙

【问题讨论】:

  • 查看我在原始问题中的回答的编辑。我的初始代码中有一些错误。

标签: extjs4


【解决方案1】:

我最初尝试的代码问题是:

  1. read() 方法应该返回一个值,所以它应该说:
return this.callParent([object]);
  1. 别名应该是'reader.my-json'

  2. 结果需要映射,因为它是一个数组:

object.Results = Ext.Array.map(object.Results, Ext.decode);

这些固定后,商店可以使用更简单的阅读器定义:

reader: {
  type: 'my-json',
  root: 'Results',
  totalProperty: 'Total'
}

但请参阅原始问题中的完整测试用例以获取完整代码。对于没有彻底测试我最初提出的代码,我深表歉意。

【讨论】:

  • 我不能使用模型。代码不起作用我在地图功能上失败了
  • 读取:函数(对象){调试器; //object.Results = Ext.decode(object.responseText); object.Results = Ext.Array.map(object.Results, Ext.decode);返回 this.callParent([object]); //返回对象。结果; }
  • 对不起,没有。也许您想将您的问题发布到 StackOverflow?
猜你喜欢
  • 2014-04-08
  • 2016-08-26
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多