每次加载数据存储区时,我都需要一种方法来捕获JSON响应。我的第一次尝试是使用autoLoad
属性,但回调仅在第一次加载时触发:
autoLoad: {
callback: function (records, operation) {
// do something with operation.response.responseText
}
}
所以,我决定扩展load
方法:
load: function (options) {
var callback = options && options.callback;
return this.callParent([Ext.apply(options || {}, {
callback: function (records, operation) {
// do something with operation.response.responseText
if (callback) {
return callback.apply(this, arguments);
}
}
})]);
}
它有效,但我想知道框架是否已经提供了更优雅的解决方案。
答案 0 :(得分:2)
您可以向商店添加加载侦听器,并在启动加载事件时从其代理中获取当前请求。
var myStore = Ext.create("Ext.data.store", {
...whatever here
listeners: {
load: function(store){
store.getProxy().activeRequest.options.operation.response.responseText;
}
}
});
如果您想要特定的响应文本,那就是。如果您希望将响应作为JSON对象,则可以使用更简单的store.getProxy().reader.rawData;