我只是想学习Ext Js。 我有类似的东西:
handler: function (checkBox, checked) {
setLoading(true);
grid1.filterExpired(checked);
grid2.filterExpired(checked);
grid3.filterExpired(checked);
if (certain condition) {
me.recalculateSalesPayoutValues();
grid4.filterExpired(checked);
}
setLoading(false);
}
filterExpired: function (filter) {
var me = this;
if (filter) {
me.store.filterBy(condition, me);
} else {
me.store.clearFilter();
}
}
问题是在内部方法结束计算之前隐藏加载掩码。我想只在所有内部方法完成时隐藏加载掩码。 我怎样才能做到这一点?我正在使用Ext Js 4.2.0
答案 0 :(得分:1)
简单的解决方案是链接内部方法调用...所以anothermethod1将调用anothermethod2 ....并且最后是anothermethodN()。
所以移动" loadingMask.hide()"到最后一个内部方法将确保只有在执行所有方法时才会发生掩码/取消掩码。
答案 1 :(得分:1)
问题在于,当您显示加载掩码时,您(可能)会跳转到一些永远不会让UI更新的“繁忙进程”。因为JS从不放弃控制直到方法完成然后掩码隐藏,所以你永远不会在视觉上看到变化。简单的解决方案是在短暂的超时运行任务:
mask.show();
// Give the UI a chance to update
setTimeout(function() {
method1();
method2();
mask.hide();
}, 1);