angularjs ng-grid保持更新选择

时间:2013-01-16 15:21:06

标签: angularjs angular-ui ng-grid

我正在尝试使用ng-grid设置,我遇到以下问题。

我显示的数据每隔5秒左右就会频繁变化。但是没有很多新数据被添加到列表中。

当我将数据设置为ng-grid时,用户可以开始查看数据。但是当我在大约5秒后更新数据时,用户所做的选择和分组都将丢失。

http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb

无论如何都要保留选择和/或分组?

2 个答案:

答案 0 :(得分:3)

您将不得不通过for循环来合并数据。如果您替换整个数组,那么您将替换对象引用,因此您将丢失所做的任何更改。

另一个选项是将您的选择保留在不同的数组或字典中,然后在替换数组后重新映射您的属性。请注意,您将需要使用引用类型,因此更改将持久保存到您的选择数组中。

所以喜欢[伪代码]:

// a dictionary of reference types (IMPORTANT that they are objects!)
// to hold selection data.
var selections = {
  'Name1' : { value: 'selection' },
  'Name2': { value: 'selection2' }
}

$scope.getMyData = function () {    
    // do whatever to get your data here.
    $scope.myData = [
       { name: 'Name1' },
       { name: 'Name2' }
    ];

    // update your objects in your array. 
    for(var i = 0; i < $scope.myData.length; i++) {
       var data = $scope.myData[i];
       var selection = selections[data.name];
       if(selection) {
           data.selection = selection;
       }
    }    
};

// initial load
$scope.getMyData();

// your test interval
setInterval(function () {
    $scope.$apply(function (){
       $scope.getMyData();
    });
}, 5000);

答案 1 :(得分:2)

我们将在下一个版本中添加一个主键选项,允许网格关闭而不是引用。