2011-04-13 74 views
1

我有一个带加载器的TreePanel。我也有一个TextField,在每次按键(带缓冲区)后重新加载加载器。Extjs树面板加载器ajax调用

如果发生上次重新加载时发生这种情况,我想取消当前的重新加载并重新加载。我现在有中止工作,但它可以防止任何重载从那里....

// 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
abort : function(){ 
    if(this.isLoading()){ 
     Ext.Ajax.abort(this.transId); 
    } 
}, 

它看起来像是调用中止与请求的具体事务ID,所以在我看来,这里似乎没有任何异步问题。但是,您可以通过在中止和重新加载调用之间放置警报来确认中止完全结束,然后再重新加载函数创建新的事务ID。

我,不过,有点惊讶的是:

thisTree.root.reload(); 

工作没有中止。什么类型的节点是你的根节点? Ext.tree.AsyncTreeNode?我看到的更常见的方法是:

tree.getLoader().load(tree.root); 

从我所看到的节点并不总是有一个重载方法。

虽然需要更多信息。中止和调用重新加载时会发生什么? Firebug不显示任何Ajax请求?

+0

感谢您的回答。我试试你的重装方法。是的,节点是一个AsyncTreeNode。 Firebug显示电话。没有中止,当调用重载时,它显示ajax调用。但另一个人不能做,直到完成 – neolaser 2011-05-04 00:10:17