Bry*_*ynJ 5 ajax load extjs store extjs4
我有一个store load方法,它通过ajax请求返回数据.我可以看到使用Firebug返回数据,但我的成功处理程序没有被调用:
this.getCategoriesStore().load({params:{'id':d.data.category_id}}, {
success: function(category) {
console.log("Category: " + category.get('name'));
},
error: function(e) {
console.log(e);
}
});
Run Code Online (Sandbox Code Playgroud)
我将返回一个成功参数以及数据:
{"success":true,"categories":{"id":5,"name":"Frying","section_id":2}}
Run Code Online (Sandbox Code Playgroud)
有什么东西丢失了或者我做错了什么?
sra*_*sra 20
好吧,我想你正在寻找这个:
store.load({
params:{'id':d.data.category_id},
scope: this,
callback: function(records, operation, success) {
if (success) {
console.log("Category: " + category.get('name'));
} else {
console.log('error');
}
}
});
Run Code Online (Sandbox Code Playgroud)
在API中并不是那么明显,你的额外参数也可以放在那里.但ExtJS经常使用配置对象来包装.
编辑回答评论:
简短的回答是:是的
现在是更长的版本:在商店的情况下,您可以直接提供匿名(或具体)回调或注册事件.在这种情况下,两者都会起作用.
但是你可以只有一个回调,而你可以有很多事件.在进一步的场景中,您会发现事件更适合的情况或者事件是唯一的方式.当你在倾听时,情况总会如此.以下是一些注释:
store.on('load', function(s) { /* do something*/ }, scope, { single: true })侦听器将在调用后删除.这是使用匿名函数的必要原因,无法删除.两者都会为您节省浏览器内存.
试试这个:
store.load({
scope: this,
callback: function(records, operation, success) {
// the operation object
// contains all of the details of the load operation
console.log(records);
}
});
Run Code Online (Sandbox Code Playgroud)
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-load根据文档没有成功和错误回调.
提供回调的另一种方法是,您还可以在商店中添加"加载"事件侦听器以获得相同的效果.
| 归档时间: |
|
| 查看次数: |
31147 次 |
| 最近记录: |