0

当我的网格通过 AJAX 代理加载时,我使用响应的“消息”键传递异常错误消息成功加载的可选信息消息。例如:

{ 
  results: 100, 
  success: true,
  rows: [ { ...data here... } ], 
  message: "Query took 2.2 milliseconds"
}

我在使用 ExtJS 4.x 和 5.0 时问了一个类似的问题,我能够使用 Proxy 的afterRequest事件来查看响应、提取消息并显示它。

但是这在 5.1 中被删除了,我似乎无法在 6.0 中找到一个等价物。我也从有一个非常相似的问题的人那里找到了这个答案,但是扩展 Ext.data.proxy.Ajax 的公认答案在 6.0 中对我不起作用——它放弃了调用“this.callParent(arguments)”。

我已经为此工作了好几个小时,在代理、阅读器、存储和网格配置上戳和刺激,并搜索谷歌。像往常一样,6.0 的文档在涉及事件时毫无用处。

我能找到在 AJAX 加载成功时触发的唯一事件是商店的“加载”事件。不幸的是,至少据我所知,商店无法访问代理处理的 JSON 响应。代码:

var ResultsDataStore = Ext.create("Ext.data.Store", {
    listeners: {
        load: function() { console.log("storeload"); }
    },
    proxy: ...

我怎么能:

(1) 从 Store 的 load 事件中访问 Response,或者

(2) 侦听可以访问响应中传递的消息的其他事件?

4

1 回答 1

0

我建议使用 Reader 的transform配置选项:

var resultStore = new Ext.data.Store({
    proxy: {
        reader: {
            type: 'json',
            transform: function(data) {
                var message = data.message;
                ...
                return data;
            }
        }
    }
});

在文档中查看更多信息:http ://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.reader.Reader-cfg-transform

于 2015-07-09T20:26:59.230 回答