我正在使用ExtJS 4.1。在UI上我有两个按钮--btnOne& btnTwo。我有一个商店,我点击两个按钮后加载。
我想要的:点击任何按钮,我仍然想加载商店,但是点击btnOne,我想加载商店,加载商店时,我想调用回调函数。我无法在商店加载时添加回调函数,因为我只想在单击btnOne时调用回调函数。
我查看了store load docs& load方法实际上允许回调函数。
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');
});
但在我的情况下,回调函数在存储加载之前被调用。
我不想为同一个维护变量。
请建议。
答案 0 :(得分:0)
使用全局变量的想法是正确的,只是你不应该使变量成为全局变量,而是本地变量(到你的控制器)。因此,在您的控制器中为每个单击的按钮添加两个内部状态,并在商店负载的回调中检查这些状态:
//in your controller:
var ctrl = this;//ctrl == this == controller
store.on('load', function() {
if (ctrl.firstButtonClicked && ctrl.secondButtonClicked) {
mySecondCallback(withArguments);
}
})
答案 1 :(得分:0)
在Controller级别定义回调,比如说onStoreLoad(),另外还有一个带参数(回调函数指针)的函数专门加载商店。
onStoreLoadComplete: function() {}
loadStore: function(callback) {
store.load({callback: callback});
}
单击该按钮,您可以决定是否要将回调函数引用传递给第二个函数,这将解决您的问题。
onFirstButtonClick: function(){
this.loadStore(this.callback);
}
onSecondButtonClick: function(){
this.loadStore();
}