我不相信目前還有時,將觸發過濾器已經改變的事件,但你不應該需要一個。
作爲一個例子,您可以將網格列插入控制器的作用域,並用ng-repeats顯示其過濾器列的列表。
這裏是你如何使用onRegisterApi
得到電網進入你的範圍:
$scope.gridOptions = {
enableFiltering: true,
columnDefs: [
{ name: 'name' },
{ name: 'amount', cellFilter: 'fractionFilter' }
],
onRegisterApi: function (api) {
$scope.grid = api.grid;
}
};
然後,你interate在你的欄目,篩選那些具有過濾器與填充方面,內列迭代通過它的過濾器。
<span ng-repeat="col in grid.columns | hasFilterTerm">
<strong ng-if="$first"><i>Filters:</i></strong>
<strong>{{ col.name }}:</strong>
<span ng-repeat="f in col.filters">
{{ f.term }} <span ng-if="!$last">,</span>
</span><span ng-if="!$last">;</span>
</span>
你「列有有源濾波器術語」過濾器可以是這樣的:
app.filter('hasFilterTerm', function() {
return function (columns) {
var cols = [];
columns.forEach(function (c) {
c.filters.forEach(function (f) {
if (f.term) {
cols.push(c);
}
});
});
return cols;
}
});
這裏只是顯示在網格下面有源濾波器的名單演示plunker:http://plnkr.co/edit/rpLcY3JztGjXOu2QMmEU?p=preview插入即進入自定義標題應該是直截了當的。您不需要將網格暴露給您的控制器範圍,並且可以直接在grid.columns
上迭代。
我想推薦你檢查Tubular Grids(https://github.com/unosquare/tubular),你可以直接訪問網格範圍中的列過濾器。 –