anyMatch: true
の使用を実装したストアには、マルチセレクションがバインドされています(Filter.js内のコメントに従って)True to allow any match - no regex start/end line anchors will be added
を許可します。私の問題は、私は特に、私が何をしたいのか、このフィドルにhttps://fiddle.sencha.com/#fiddle/jf5ExtJS for MultiSelect検索でFilter.JSのanyMatchのデフォルトを変更する
を提供するソリューションはちょうどかかわらず、anyMatch: true
に設定されているので、私はFilter.jsでそれを設定し、multiselect-search-whole-stringへの回答ごとにこれを実装する必要があるということですしかし、これはそれの使用に影響を与えません。私はanyMatch: false
の他のインスタンスのコードベース全体を検索し、唯一のものはext-all-debug.js
です。これらの値を設定していないのはなぜですか?このデフォルト値をどこに設定できるのかわかりません。
EDIT 1
は、私は別のオーバーライドを試みたが、それが正しい挙動を示すされていないが、それは実際にこの時間に何かをやっています。 MultiSelectorコントロール内のsearch
属性に埋め込まれているときに動作するコードの塊は、MultiSelectorSearchのsearch
メソッドで見つかったもので、オーバーライドに集中する必要があることがわかりました。これを微調整上の任意の提案で最も歓迎されるだろう:
Ext.define('Ext.overrides.view.MultiSelectorSearch', {
override: 'Ext.view.MultiSelectorSearch',
search: function (text, me) {
var filter = me.searchFilter,
filters = me.getSearchStore().getFilters();
if (text) {
filters.beginUpdate();
if (filter) {
filter.setValue(text);
} else {
me.searchFilter = filter = new Ext.util.Filter({
id: 'search',
property: me.field,
value: text,
anyMatch: true
});
}
filters.add(filter);
filters.endUpdate();
} else if (filter) {
filters.remove(filter);
}
}
});
EDIT 2
はそれを手に入れました!キーはもともと、このコードはシングルトンに埋め込まれていたので、呼び出すform.panelからme
を渡してメソッドを参照できました。これはオーバーライドとして世界的に働く、と私は、これはそこに誰かに役立ちます願ってい
search: function (text) {
var me = this,
ような方法を定義するために私を必要としませんでした!
をこのクラスをインポートしますうまくいっていれば、オーバーライドは機能しません。私は他のオーバーライドがあるので、私はそれらのように実装しました。私はあなたの答えを編集しましたが、明らかにそれはピアレビューを受けなければなりません。とにかく、名前空間を「Ext.overrides.util.Filter」に変更し、Application.jsにインポートするクラスを変更しました。 –
これは理にかなっていません。特に、上記のフィドルに基づく検索属性の変更は基本的に、別の場所から 'anyMatch:true'で同じことをしているためです。 –
私はあなたに最初にそれが良いことはないと思った後、私はオーバーライドに向かって私をステアリングのポイントを与えた。 –