我有一个带有加载器的TreePanel。我还有一个TextField,在每次按键(带缓冲区)后重新加载加载器。
如果在前一次重新加载时出现这种情况,我想取消当前的重新加载并重新加载一个新加载。我目前有中止工作,但它可以防止从那里重新加载......
// abort the previous call. Works, but then cant reload
thisTree.loader.abort();
// This works without the abort
thisTree.loader.baseParams.quicksearch_string = val;
thisTree.root.reload();.
希望我遗漏一些基本的东西,但似乎无法弄清楚......
答案 0 :(得分:0)
abort : function(){
if(this.isLoading()){
Ext.Ajax.abort(this.transId);
}
},
看起来它正在使用请求的特定事务ID调用abort,因此在我看来似乎没有任何异步问题。但是,您可以通过在中止和重新加载调用之间发出警报来测试这一点,以确保在重新加载函数创建新事务ID之前完全终止中止。
然而,我对此感到惊讶:thisTree.root.reload();
正在没有中止的情况下工作。您的根节点是什么类型的节点? Ext.tree.AsyncTreeNode?我看到的更常见的方法是:
tree.getLoader().load(tree.root);
从我所看到的情况来看,节点并不总是有重载方法。
但需要更多信息。中止和调用重载时会发生什么? Firebug没有显示任何ajax请求?