背景:我希望能够为 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/