ExtJs 动态存储调用失败处理
ExtJs Dynamic Store Failed call Handle
我有一家经典店
Ext.define('xxx.store.Search', {
extend: 'Ext.data.Store',
model: 'xxx.model.Search',
requires: ['xxx.data.xxxx'],
proxy:
{
type: 'xxxxx',
digSearchUrl: {
initRequest: 'ajax/xxx/xxx/xx',
pollRequest: 'ajax/xxxx/xxxx/xxxxxx'
}
},
autoLoad: false,
defaultSortDirection: 'DESC'
});
现在我通常像这样加载商店:
this.getStore('Search').load({
digSearchCfg: {
xxx: sid,
xxx: xxxx
}
});
我知道我可以使用这里的标准方法:
Attempting to load Ext store with JSON data from AJAX request returns error
但我宁愿在它自己的商店中定义错误处理程序。那可能吗?
如果您想自己捕获和处理 Ajax 请求异常,只需向 Ajax 代理添加一个异常侦听器,如下所示:
var store = Ext.create('Ext.data.JsonStore', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data2.json',
reader: {
type: 'json',
rootProperty: 'characters'
},
listeners: {
exception: function(proxy, response, operation, eOpts ) {
console.log("EXCEPTION CAUGHT!");
}
}
},
listeners: {
load: function() {
console.log(this);
}
}
});
您可以看到一个演示 fiddle here。 data1.json 将工作并将存储对象记录到控制台。 data2.json 将 'EXCEPTION CAUGHT!' 记录到控制台。
这里是Ajax proxy的文档供参考。
我有一家经典店
Ext.define('xxx.store.Search', {
extend: 'Ext.data.Store',
model: 'xxx.model.Search',
requires: ['xxx.data.xxxx'],
proxy:
{
type: 'xxxxx',
digSearchUrl: {
initRequest: 'ajax/xxx/xxx/xx',
pollRequest: 'ajax/xxxx/xxxx/xxxxxx'
}
},
autoLoad: false,
defaultSortDirection: 'DESC'
});
现在我通常像这样加载商店:
this.getStore('Search').load({
digSearchCfg: {
xxx: sid,
xxx: xxxx
}
});
我知道我可以使用这里的标准方法: Attempting to load Ext store with JSON data from AJAX request returns error 但我宁愿在它自己的商店中定义错误处理程序。那可能吗?
如果您想自己捕获和处理 Ajax 请求异常,只需向 Ajax 代理添加一个异常侦听器,如下所示:
var store = Ext.create('Ext.data.JsonStore', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data2.json',
reader: {
type: 'json',
rootProperty: 'characters'
},
listeners: {
exception: function(proxy, response, operation, eOpts ) {
console.log("EXCEPTION CAUGHT!");
}
}
},
listeners: {
load: function() {
console.log(this);
}
}
});
您可以看到一个演示 fiddle here。 data1.json 将工作并将存储对象记录到控制台。 data2.json 将 'EXCEPTION CAUGHT!' 记录到控制台。
这里是Ajax proxy的文档供参考。