我有以下场景:我获取UI网格的数据,并显示它能够切换标题过滤器。稍后我需要再次请求数据并且还能够切换过滤器。我的代码只在第一次工作。在我再次请求数据后(基本上重新创建我最初设置表格的操作),过滤器不再起作用。我创建了一个说明这个http://plnkr.co/edit/KQbkGZQnjxCFTrS4Elgh?p=preview的plunker:点击切换过滤按钮 - 看过滤器确定。然后按:再次请求数据 - 过滤器不再有效。我怀疑onRegisterApi方法只被调用一次,虽然我不确定它是不是。任何帮助赞赏。
$scope.toggleFiltering = function(){
$scope.gridOptions.enableFiltering = !$scope.gridOptions.enableFiltering;
$scope.gridApi.core.notifyDataChange( uiGridConstants.dataChange.COLUMN );
};
答案 0 :(得分:2)
再次请求数据时,您不必重新初始化gridOptions
。从你的plnkr中删除它固定它。因此,您的requestDataAgain
函数将如下所示:
$scope.requestDataAgain = function(){
$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
.success(function(data) {
$scope.gridOptions.data = data;
$scope.gridOptions.data[0].age = -10;
data.forEach( function addDates( row, index ){
row.mixedDate = new Date();
row.mixedDate.setDate(today.getDate() + ( index % 14 ) );
row.gender = row.gender==='male' ? '1' : '2';
});
});
};
Here是更新的plnkr。
答案 1 :(得分:1)
看看这是否适合您。 您在$ scope.requestDataAgain上再次调用$ scope.gridOptions,但这不是必需的。
$scope.requestDataAgain = function(){
$http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
.success(function(data) {
$scope.gridOptions.data = data;
$scope.gridOptions.data[0].age = -5;
data.forEach( function addDates( row, index ){
row.mixedDate = new Date();
row.mixedDate.setDate(today.getDate() + ( index % 14 ) );
row.gender = row.gender==='male' ? '1' : '2';
});
});
};