[英]Adding callback function to ExtJs store based on certain condition
我正在使用ExtJS 4.1。 在UI上,我有两个按钮-btnOne和btnTwo。 我有一个商店,单击两个按钮后即可加载。
我想要的是:单击任何按钮时,我仍然要加载存储,但是单击btnOne时,我要加载存储,并且在加载存储时,我要调用回调函数。 我无法在存储负载上添加回调函数,因为仅当单击btnOne时才想调用该回调函数。
我看着商店加载文档和加载方法实际上允许一个回调函数。
store.load({
scope: this,
callback: function(records, operation, success) {
// the operation object
// contains all of the details of the load operation
console.log(records);
}
});
如果不需要设置回调范围,则可以简单地传递一个函数:
store.load(function(records, operation, success) {
console.log('loaded records');
});
但是在我的情况下,回调函数在存储加载之前被调用。
我不想保持相同的变量。
请提出建议。
具有全局变量的想法是正确的,只是您不应将变量设置为全局变量,而应将其设置为本地变量(对于您的控制器)。 因此,在您的控制器中为每个单击的按钮添加两个内部状态,并在存储负载的回调中检查这些状态:
//in your controller:
var ctrl = this;//ctrl == this == controller
store.on('load', function() {
if (ctrl.firstButtonClicked && ctrl.secondButtonClicked) {
mySecondCallback(withArguments);
}
})
在控制器级别定义回调,例如onStoreLoad(),并另外定义一个带有参数的函数(回调函数指针)以专门加载商店。
onStoreLoadComplete: function() {}
loadStore: function(callback) {
store.load({callback: callback});
}
单击按钮后,您可以决定是否要将回调函数引用传递给第二个函数,这将解决您的问题。
onFirstButtonClick: function(){
this.loadStore(this.callback);
}
onSecondButtonClick: function(){
this.loadStore();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.