1

每次我的数据存储加载时,我都需要一种方法来捕获 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);
            }
        }
    })]);
}

它有效,但我想知道框架是否已经提供了更优雅的解决方案。

4

1 回答 1

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;更简单的

于 2013-03-04T18:58:36.870 回答