我正在使用启用外部过滤的ui-grid。我已经注册了处理程序:
gridApi.core.on.filterChanged($scope, getFilters);
gridApi.core.on.columnVisibilityChanged($scope, function (column) {
column.filters[0].term = null;
ctrl.gridApi.core.raise.filterChanged();
});
我看到的问题是,当我在过滤输入框中输入内容时,过滤按预期工作,我得到了结果的子集。现在我继续尝试隐藏过滤列,过滤术语仍在那里。我想要的是重置我尝试在columnVisibilityChanged监听回调中执行的过滤器。我看到所有的回调都会触发,但是当我获取数据时,隐藏的列会重新添加回网格中。我的外部过滤重新填充了grid.data数组,没有别的。
答案 0 :(得分:0)
这里的价值在于我如何解决这个问题:
gridApi.core.on.columnVisibilityChanged($scope, function (column) {
// must find a column on the appScope and set its visibility property
_.forEach(ctrl.gridApi.grid.appScope.columns, function(appScopeColumn){
// find filterable column
if (column.enableFiltering && column.field === appScopeColumn.id) {
appScopeColumn.visible = column.visible;
// only trigger filterChanged event if the column's filter was set
if(column.filters[0].term) {
ctrl.gridApi.core.raise.filterChanged();
}
}
});
});