2009-06-12 9 views
22

は、私は、単純なコンボボックスを作成してみました:ExtJSコンボボックスのtriggerAction: "all"は本当に何をしていますか?

var combo1 = new Ext.form.ComboBox({ 
    store: [1,2,3], 
    renderTo: document.body 
}); 

をしかし、それは奇妙な行為をこのように書かれて:

  • 初めてポップドロップダウンを開く

    は、それは3つの選択肢を提供しています。
  • 1つを選択してください。
  • しかし、その後に選択内容を変更しようとすると、ドロップダウンは1つの選択肢、つまり前に選択したものだけを提供します。

私は内線ホームページ上samplesに私のコードを比較し、triggerAction: "all"を追加することが私の問題を解決することを発見:triggerActionため

var combo2 = new Ext.form.ComboBox({ 
    triggerAction: "all", 
    store: [1,2,3], 
    renderTo: document.body 
}); 

ExtJSのドキュメントは私に多くのことを教えてくれない:

をトリガーがクリックされたときに実行するアクション。 allQuery 設定オプション(「クエリ」にデフォルト)

で指定されたクエリを実行する 使用「すべて」私はallQueryオプションを指定していません。実際には、サーバーへのクエリをまったく実行したくありません。

だから、triggerActionは本当に何をしていますか?

これを"all"に設定すると、単純な静的コンボボックスが必要なときに本当に何をすべきですか?

答えて

22

アイテムを選択すると、リストは現在のテキスト値と一致するようにフィルタされます。あなたのケースでは、常に正確に選択された値ですが、複数文字の値がより明白です(Extの状態名の例を参照してください)。選択した値を削除すると、ドロップダウンはすべての値に戻ります。 triggerAction:'all'はフィルタリングしない、すべての値を常に表示することを意味します。

+0

ありがとうございました。今私はそれを得る。 –

+3

これは理にかなっていますが、これは実際にはあまり意味のないオプションです! – duma

+0

名前の理由は、configが 'TriggerField'から継承されているため、より一般的にはコンボ以外で使用され、他の実装でのフィルタリングに関連する必要はありません。しかし、より具体的なコンボ固有のエイリアスは良いかもしれません。 –

関連する問題