我有一个存储加载方法,它通过 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);
}
});
我正在返回一个成功参数以及数据:
{"success":true,"categories":{"id":5,"name":"Frying","section_id":2}}
有什么遗漏还是我做错了什么?
请您参考如下方法:
好吧,我想你正在寻找这个:
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');
}
}
});
在 中并不那么明显API 你的额外参数也可以放在那里。但是 ExtJS 经常使用配置对象来包装东西。
编辑回答评论:
简短的回答是: 是
现在更长的版本:
在商店的情况下,您可以直接提供匿名(或具体)回调或注册事件。在您的情况下,两者都将起作用。
但是你只能有一个回调,而你可以有很多事件。在进一步的场景中,您会发现事件更适合或事件是唯一方法的情况。当你在听的时候,情况总是如此。以下是一些注意事项:
store.on('load', function(s) { /* do something*/ }, scope, { single: true })监听器在被调用后将被移除。这是使用无法删除的匿名函数的必要原因。 两者都将节省您的浏览器内存。




