javascript - 迁移 Ext JS 4 代码库时无法覆盖 Ext.data.proxy.Ajax 实例上的方法 afterRequest

标签 javascript extjs

背景:我希望能够为 ajax 加载错误创建自定义错误掩码,例如。以防网络问题。

我正在使用以下代码来创建一个新的 Ext JS 存储,我想用我自己的 afterRequest 函数扩展其代理。 afterRequest 函数应该发送一个 afterload 事件,该事件由在小部件上调用 mask() 的实用函数使用。

var settingsStore = new Ext.data.Store({
  model: 'vmSettings',
  autoload: 'true',
  proxy: {
    type: 'ajax',
    url: 'ta-debian-7-wheezy-virtualbox.json',
    afterRequest: function(request, success) {
      this.fireEvent('afterload', this, request, success);
      return;
    },
    reader: {
      type: 'json',
      rootProperty: 'variables',
    },
  }

});

现在这段代码在加载 Ext JS 时出现错误,但在 5.1 上失败并显示消息:无法在 Ext.data.proxy.Ajax 实例上覆盖方法 afterRequest

这里可能出了什么问题?

最佳答案

根据@yellen 的发现,我可以说从 5.1 版开始,添加了严格模式检查以限制函数覆盖。在这种情况下,我认为这可能是一个错误,因为这是一个旨在被覆盖的空回调方法。无论如何, 可以通过添加以下内容来通过此检查:$configStrict: false 到代理配置对象。可能他们只是明确声明了这种覆盖。

这就是您的代码的样子:

var settingsStore = new Ext.data.Store({
  model: 'vmSettings',
  autoload: 'true',
  proxy: {
    $configStrict: false,
    type: 'ajax',
    url: 'ta-debian-7-wheezy-virtualbox.json',
    afterRequest: function(request, success) {
      this.fireEvent('afterload', this, request, success);
      return;
    },
    reader: {
      type: 'json',
      rootProperty: 'variables',
    },
  }

});

有关 $configStrict here 的更多信息.

找到一个可用的 fiddle here .

关于javascript - 迁移 Ext JS 4 代码库时无法覆盖 Ext.data.proxy.Ajax 实例上的方法 afterRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29796303/

相关文章:

extjs - 你如何使用 Jasmine + Resharper 引用外部库

javascript - 通过单击窗口外部防止 Jquery 弹出窗口关闭

javascript - 重新加载 Jquery .on 事件处理程序

android - 如何处理 sencha touch 应用程序上的设备后退按钮

Jquery 库无法与 sencha touch 一起使用?

java - ExtJS JsonStore 和 Netty

javascript - 如何发现字体类型?

javascript - 如何在 rxjs 中进行序列映射,以便每个映射等待前一个映射?

javascript - Raphael:拖动矩形并保持它们连接

javascript - 如何将简单的 dom 元素添加到 ExtJS 容器中?