2012-11-19 29 views
3

我有一個組合框(extjs4.1.2):如何正確取消與以下CONFIGS店濾波要求

xtype:'combo',   
    store: 'MyItems', 
    queryParam:'itemNumber', 
    displayField:'itemNumber', 
    hideTrigger:true, 
    typeAhead:true, 
    minChars:7, 
    lastQuery: '', 
    queryDelay:500 

一切正常並存儲觸發7日焦炭遠程查詢。但是,如果用戶不斷鍵入第8個字符,則會觸發另一個查詢。第二個查詢返回的速度比第一個快,然後第一個查詢返回並調整向下拉。有沒有辦法在後續查詢運行時取消第一個查詢?

謝謝。

回答

0

這裏是我最後做:

listeners:{ 
    beforequery:function(queryEvent){ 
    Ext.Ajax.abortAll(); //cancel any previous requests 
    return true; 
    } 
} 
1

您可以使用Ext.Ajax.abort()Ext.Ajax.abortAll()(ExtJS 4)。 見API文檔:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Ajax

您可以通過截獲組合框的onTypeAhead功能使用:

comboObj.onTypeAhead = Ext.Function.createInterceptor(comboObj.onTypeAhead, function() { 
    Ext.Ajax.abort(); //aborts the last Ajax request 
    return true; //runs the onTypeAhead function 
}); 

或者你可以使用在Ext.data.ConnectionautoAbort財產,但沒有太多的文檔在這。我會盡力爲你做一個有效的例子。

+0

這不是一個很完整的答案是有用的。 – dbrin

+0

感謝您的修改。我做了一些稍微不同的方法。請參閱下面的答案。 – dbrin