2016-03-31 2 views
0

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, 

ような方法を定義するために私を必要としませんでした!

答えて

1

ext-all-debug.jsでの変更は安全ではありません。プロダクションビルドを行うと、このファイルは含まれません。

最も良い方法は、Filterクラスをオーバーライドすることです。ここではその方法を説明します。

Ext.define('Ext.overrides.util.Filter', { 
    override: 'Ext.util.Filter', 

    anyMatch: true 
}); 

そして、私はオーバーライドをしようとするつもりだったが、それはFilter.jsを直接操作して働いていなかった場合、私はそれはないだろう、その後考え出しApplication.js

Ext.require([ 
    'Ext.overrides.util.Filter' 
]); 
+0

をこのクラスをインポートしますうまくいっていれば、オーバーライドは機能しません。私は他のオーバーライドがあるので、私はそれらのように実装しました。私はあなたの答えを編集しましたが、明らかにそれはピアレビューを受けなければなりません。とにかく、名前空間を「Ext.overrides.util.Filter」に変更し、Application.jsにインポートするクラスを変更しました。 –

+0

これは理にかなっていません。特に、上記のフィドルに基づく検索属性の変更は基本的に、別の場所から 'anyMatch:true'で同じことをしているためです。 –

+0

私はあなたに最初にそれが良いことはないと思った後、私はオーバーライドに向かって私をステアリングのポイントを与えた。 –

関連する問題