3

次の構成のコンボボックス(extjs4.1.2)があります。

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

すべてが期待どおりに機能し、storeは7番目の文字でリモートクエリを実行します。ただし、ユーザーが8番目の文字を入力し続けると、別のクエリが実行されます。2番目のクエリは最初のクエリよりも速く戻り、次に最初のクエリが戻ってプルダウンを台無しにします。後続のクエリが実行されたときに最初のクエリをキャンセルする方法はありますか?

ありがとう。

4

2 に答える 2

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
});

autoAbortまたは、でプロパティを使用することもできますが、Ext.data.Connectionこれに関するドキュメントはあまりありません。私はこれについてあなたのために実用的な例を手に入れようとします。

于 2012-11-20T03:58:26.510 に答える
0

これが私がやったことです:

listeners:{
  beforequery:function(queryEvent){
    Ext.Ajax.abortAll(); //cancel any previous requests
    return true;
  }
}
于 2012-12-01T00:36:26.293 に答える