ExtJS 4.1.1中的持久存储加载回调

时间:2013-03-04 12:49:35

标签: json load store extjs4.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);
            }
        }
    })]);
}

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

1 个答案:

答案 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;