Javascript 根据一定条件向ExtJs存储添加回调函数
我使用的是ExtJS4.1。在UI上,我有两个按钮-btnOne和btnTwo。我有一个商店,我点击两个按钮后加载 我想要的:点击任何按钮,我仍然想加载存储,但点击btnOne,我想加载存储,当加载存储时,我想调用回调函数。我无法在存储加载时添加回调函数,因为我只想在单击btnOne时调用回调函数 我查看了&load方法,它实际上允许回调函数Javascript 根据一定条件向ExtJs存储添加回调函数,javascript,extjs,callback,extjs4.1,extjs-stores,Javascript,Extjs,Callback,Extjs4.1,Extjs Stores,我使用的是ExtJS4.1。在UI上,我有两个按钮-btnOne和btnTwo。我有一个商店,我点击两个按钮后加载 我想要的:点击任何按钮,我仍然想加载存储,但点击btnOne,我想加载存储,当加载存储时,我想调用回调函数。我无法在存储加载时添加回调函数,因为我只想在单击btnOne时调用回调函数 我查看了&load方法,它实际上允许回调函数 store.load({ scope: this, callback: function(records, operation, succ
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();
}
有没有办法在不维护变量的情况下实现这一点?没有:按钮没有状态,因此您必须在变量中的某个位置维护状态。但是您可以将这些变量保存在按钮本身中:
按钮。[prefix]Clicked=true
(更改前缀以确保不会弄乱Ext框架的内部变量)。或者,您可以使用一些复选框,这些复选框一旦选中,就无法取消选中。