私は同じ問題を扱っていましたが、私見がより「角度に優しい」別の解決策を思いつきました。 Angular 1.3 で導入されたngModelOptions ディレクティブを使用しました。uiGrid の既定のフィルター テンプレート ("ui-grid/ui-grid-filter") をカスタム テンプレートに置き換え、入力の ngModelOptions ディレクティブを既定のデバウンス値 300 ミリ秒とぼかし用の 0 ミリ秒に構成しました。
これは ui-grid 3.0.5 の元のテンプレートに基づくサンプル テンプレートで、Bootstrap クラスによってデフォルトの CSS クラスも変更されています。
$templateCache.put('ui-grid/ui-grid-filter-custom',
"<div class=\"ui-grid-filter-container\" ng-repeat=\"colFilter in col.filters\" ng-class=\"{'ui-grid-filter-cancel-button-hidden' : colFilter.disableCancelFilterButton === true }\">" +
"<div ng-if=\"colFilter.type !== 'select'\"><input type=\"text\" class=\"input-sm form-control\" ng-model=\"colFilter.term\" ng-model-options=\"{ debounce : { 'default' : 300, 'blur' : 0 }}\" ng-attr-placeholder=\"{{colFilter.placeholder || ''}}\" aria-label=\"{{colFilter.ariaLabel || aria.defaultFilterLabel}}\"><div role=\"button\" class=\"ui-grid-filter-button\" ng-click=\"removeFilter(colFilter, $index)\" ng-if=\"!colFilter.disableCancelFilterButton\" ng-disabled=\"colFilter.term === undefined || colFilter.term === null || colFilter.term === ''\" ng-show=\"colFilter.term !== undefined && colFilter.term !== null && colFilter.term !== ''\"><i class=\"ui-grid-icon-cancel\" ui-grid-one-bind-aria-label=\"aria.removeFilter\"> </i></div></div>" +
"<div ng-if=\"colFilter.type === 'select'\"><select class=\"form-control input-sm\" ng-model=\"colFilter.term\" ng-attr-placeholder=\"{{colFilter.placeholder || aria.defaultFilterLabel}}\" aria-label=\"{{colFilter.ariaLabel || ''}}\" ng-options=\"option.value as option.label for option in colFilter.selectOptions\"><option value=\"\"></option></select><div role=\"button\" class=\"ui-grid-filter-button-select\" ng-click=\"removeFilter(colFilter, $index)\" ng-if=\"!colFilter.disableCancelFilterButton\" ng-disabled=\"colFilter.term === undefined || colFilter.term === null || colFilter.term === ''\" ng-show=\"colFilter.term !== undefined && colFilter.term != null\"><i class=\"ui-grid-icon-cancel\" ui-grid-one-bind-aria-label=\"aria.removeFilter\"> </i></div></div>" +
"</div>"
);
これを機能させるための最後の手順は、フィルタリングを有効にするすべての columnDef でこのテンプレートを設定することです。
columnDefs: [{
name: 'theName',
displayName: 'Whatever',
filterHeaderTemplate: 'ui-grid/ui-grid-filter-custom'
}]
残念ながら、このテンプレートをグローバルに定義する方法が見つからなかったので、どこでも filterHeaderTemplate を繰り返さなければなりませんでした...それが唯一の欠点ですが、必要に応じてカスタム テンプレートにフィルターを追加することもできます。に。
それが役に立てば幸い!