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次)
  • 未打印在我手动重新排序列/更改某些列的可见性之后

如果您想知道用户何时对列重新排序,可以收听ngGridEventSorted

$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列的调用)。