3

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

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

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

http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb

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

4

2 回答 2

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);
于 2013-01-16T16:17:06.933 回答
2

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

于 2013-03-13T00:16:34.790 回答