【问题标题】:How can I respond to a successful grid load in ExtJS 6 and check the response?如何在 ExtJS 6 中响应成功的网格加载并检查响应?
【发布时间】:2015-07-10 04:26:59
【问题描述】:

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

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

我在使用 ExtJS 4.x 和 5.0 时询问了similar question,我能够使用代理的afterRequest 事件来查看响应、提取消息并显示它。

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

我已经在这方面工作了好几个小时,在代理、阅读器、存储和网格配置方面进行了深入研究,并在 Google 上进行了搜索。像往常一样,6.0 的文档在涉及事件时毫无用处。

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

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

我该怎么做:

(1) 从 Store 的加载事件中访问响应,或者

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

【问题讨论】:

    标签: javascript ajax extjs extjs6


    【解决方案1】:

    我建议使用 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

    【讨论】:

    • 完美!奇怪的是没有更合适的事件,比如 Ajax 类自己的“成功”回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2012-08-14
    • 2021-02-04
    相关资源
    最近更新 更多