所以我遇到一种情况,即在击键后进行了ajax调用(使用buffer:150
)。如果(无论出于何种原因)ajax调用稍微有点滞后返回,那么在该加载过程中的按键无法再次调用。
组件是使用加载器获取数据的树。设置如下:
树状配置
....
root:{
nodeType:'async',
text:'Accounts',
expanded:false,
uiProvider:false
},
loader: {
dataUrl:'dataurl',
baseParams:{},
loadexception:function(){
console.log('Failed to load QUICKSEARCH');
}
}
....
在文本字段中包含以下内容
textfield listener
....
listeners:{
keyup:{buffer:150, fn:function(f, e) {
if(Ext.EventObject.ESC == e.getKey()) {
field.onTriggerClick();
}else{
var val = this.getRawValue();
thisTree = this.ownerCt.ownerCt;
thisTree.loader.baseParams.quicksearch_string = val;
thisTree.root.reload();
}
}}
}
....
理想情况下,我希望能够取消(完全取消或取消听取响应)电话并启动新电话。
所以我想在这里实际上应该有一个问题...所以有没有办法取消先前制作的ajax调用或强制更新调用的设置
答案 0 :(得分:1)
尝试另一种重新加载树的方法。这是我见过的另一种语法。
thisTree.getLoader().load(thisTree.root);
答案 1 :(得分:0)
这里你要寻找的是异步ajax调用。
这是可能的,但重要的是要记住这些调用不一定以任何给定的顺序返回,因此只有当返回顺序无关紧要时才使用这些调用。 (虽然,你可以解决这个问题,但它会变得复杂)。
为了实现这一点(动态)你应该有一个使用一系列增量iframe的函数,因此算法如下:
如果(的document.getElementById( 'iframe1')。isDone()){ iframe1.src = newSrc }其他{ iframe2.src = newSrc }
这些将能够以异步方式运行和返回。此功能也可以放入动态循环中,允许任意数量的异步iframe调用,但您必须使用谷歌!