Javascript 为什么在ng网格中重新排序或隐藏后不修改columnDefs?
问题:Javascript 为什么在ng网格中重新排序或隐藏后不修改columnDefs?,javascript,angularjs,show-hide,ng-grid,Javascript,Angularjs,Show Hide,Ng Grid,问题: 我正在用服务器上的数据加载ng网格 我正在更改ng grid中的顺序和可见列(使用鼠标,而不是编程),但列定义不会更新 我想在另一台服务器上存储有关新订单/可见性的信息,但如果columnDefs没有更改,我不知道如何访问它 如何以编程方式访问新订单/可见性 我试过: $scope.gridOptions = { data: 'someData' columnDefs : 'columnDefs', enableColumnReordering : true,
- 我正在用服务器上的数据加载ng网格
- 我正在更改ng grid中的顺序和可见列(使用鼠标,而不是编程),但列定义不会更新
- 我想在另一台服务器上存储有关新订单/可见性的信息,但如果columnDefs没有更改,我不知道如何访问它
$scope.gridOptions = {
data: 'someData'
columnDefs : 'columnDefs',
enableColumnReordering : true, // this is how I achieve reordering
showColumnMenu : true, // this is how I can specify the visible columns
...
};
...
$scope.columnDefs = [{
...
}];
$scope.$watch('columnDefs', function() {
console.log('columnDefs was modified !');
}, true);
“columnDefs已修改!”消息为:
- 打印到控制台2次(填充ng网格前1次,填充ng网格后1次)
- 未打印在我手动重新排序列/更改某些列的可见性之后
$scope.$on ('ngGridEventSorted', function(event, data){
alert('reordered');
});
尝试
gridOptions.$gridScope.columns
,在引擎盖下,ng grid更新此数组以进行排序、冻结、显示/隐藏等。我刚刚尝试过它,它仅适用于排序(行重新排序)。我想访问新数据,以便重新排序和隐藏/显示列。请尝试gridOptions.$gridScope.columns
,在引擎盖下,它会更新此数组以进行排序、冻结、显示/隐藏等。我已存储此数据以保存ng grid LayoutHanks!你的信息非常有用。我用这种方式解决了这个问题:$scope.$watch($gridOptions.$gridScope.columns',function(newv,oldv){if(oldv!==newv){console.dir($scope.gridOptions.$gridScope.columns.columns);for(var I=0;I<$scope.gridScope.columns.length;I++){console.dir($scope.gridOptions.$gridScope.columns[I].field+]+$scope.gridOptions.$gridScope.columns[i].visible);}},true);其中,if避免了第一个操作(有两个对show/hide列的调用)。