我不相信目前还有时,将触发过滤器已经改变的事件,但你不应该需要一个。
作为一个例子,您可以将网格列插入控制器的作用域,并用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),你可以直接访问网格范围中的列过滤器。 –