3

ngTables (この例と同様) でカスタム フィルタリングを実行しようとしていますが、テキスト入力フィールドを使用します。$filter('filter')(array, params.filter())標準のテキスト入力フィルターを備えた一連の列があり、そのうちのいくつかについては、デフォルトの angularではなく、独自のフィルター関数を使用したいのですが、$filter('myOwnFilter')(array, params.filter())

私のコントローラーでフィルタリングが行われます:

var orderedData = params.filter() ? $filter('filter')(array, params.filter()) : array;

私が持っているもの:

<td class="text-left" data-title="'Name'" filter="{ 'Column': 'myOwnFilter' }" data-sortable="'Column'">
  {{ array.Column }}
</td>

そしてテンプレート:

<script type="text/ng-template" id="ng-table/filters/myOwnFilter.html">
  <input type="text" name="myOwnFilter" data-ng-model="params.filter()[name]" data-ng-if="filter == 'myOwnFilter'" class="input-filter form-control"/>
</script>
4

2 に答える 2

4

この質問https://stackoverflow.com/a/27296677/61577で回答されているように、コントローラーの 3 番目の引数としてカスタムの「コンパレーター」関数を使用する必要があります。簡単な例

var myCustomComparator = function(value, searchTerm) {
    return (value || '').indexOf(searchTerm) > -1;
}

次に、 getData コールバックで

var orderedData = params.filter() ? $filter('filter')(array, params.filter(), myCustomComparator) : array;

異なる列/フィールドに対して異なるコンパレータが必要な場合に備えて、 params.filter() を検査する必要があることに注意してください。

フィルターコンパレーターのAngularドキュメント

于 2014-12-04T19:24:41.883 に答える