访问通过商店的加载方法接收的 JSON 的附加属性

Accessing additional properties from JSON received through store's load method

我有一个通过 JSON 存储加载数据的网格,但是除了我需要访问的记录本身之外,还有一些其他属性。这是 JSON 数据的示例:

{
    success: true,
    records: [
        {id: 1, name: 'bob'},
        {id: 2, name: 'fred'}
    ],
    extraProperty: 'foo'
}

我需要在加载网格数据时访问该 extraProperty。所以我假设我想要一个回调,像这样:

store.load({
    callback: function (records, operation, success) {
        //somehow access extraProperty here
    }
});

我不确定在该回调中要做什么。操作变量是一个 Ext.data.operation.Operation 对象,有一个名为 getResponse() 的私有方法。它 returns Chrome 中的一个对象具有 responseJson 属性,但在 IE 中它具有需要解码的 responseText 属性。所以我可以处理这两种情况,但由于它是一种私有方法,所以我一开始真的不想依赖它。有什么想法吗?

在 reader 上使用 keepRawData 配置。

store.load({
    callback: () => {
        const { extraProperty } = store.getProxy().getReader().rawData;
    }
});

根据您的需要,您可能还想查看 preserveRawData

您是否在商店级别尝试过,如下所示

在 reader 配置部分的代理下

proxy: {
  type: 'ajax',
  actionMethods: {
    read: 'GET'
  },
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  },
  api: 'your url',
  reader: {
      extraProperty: 'extraProperty'
  }
}