1

ローカル ストアが外部から手動で読み込まれる 2 フィールド コンボがあります。入力してフィルタリングするときに、このコンボを展開した状態にしたいです。

フィルターを使用してリスナーをセットアップしました。フィルターは正常に動作します。

 this.listeners = {
        beforequery: function(queryPlan){
            me.store.clearFilter(true);
            me.store.filter(filter);
            return true;
        }
    };

問題は、コンボに入力を開始すると、最初の文字を入力した後に開き、表示するフィルター値がある場合でも折りたたまれることがあります。フィルタリングされたリストを表示するには、キーを押す必要があります。

しかし、バックスペースキーで文字を削除すると - 開いたままです - 実はこれが必要です。

イベントチェーンにはいくつかのトリックがあることは理解していますが、正確な方法はわかりません。手動で bow.expand() を呼び出しても効果はありません。typeAhead=true があるかどうかは意味がありません。おそらくこれは、displayField の代わりに displayTpl を使用しているためです。

何か案は ?前もって感謝します。

4

1 に答える 1

0

それが最善の解決策であるかどうかはわかりませんが、表示/非表示に関連するイベントハンドラーを追加して、その中に非表示/表示カスタムロジックを追加することができgetPicker()ます(たとえば、またはロジックに適合するその他のもの)。combobeforehide

combo.getPicker().on(
    'beforehide',
    function() {
        // Your hide logic here
    }
);

Combo picker コンポーネントはExt.view.Boundlistであるため、コントローラーでは次のようなものも機能するはずです。

init: function () {
    this.control({
        'combo[name=myCombo] boundlist': {
            beforehide: this.myHandler
        }
    });
}

フィドル

于 2016-05-24T10:18:58.200 に答える