我正在尝试使用该ng-grid
设置,但遇到以下问题。
我显示的数据变化非常频繁,每 5 秒左右。但是没有很多新数据被添加到列表中。
当我将数据设置到 ng-grid 时,用户可以开始查看数据。但是当我在大约 5 秒后更新数据时,用户所做的选择和分组丢失了。
http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb
无论如何要保留选择和/或分组吗?
我正在尝试使用该ng-grid
设置,但遇到以下问题。
我显示的数据变化非常频繁,每 5 秒左右。但是没有很多新数据被添加到列表中。
当我将数据设置到 ng-grid 时,用户可以开始查看数据。但是当我在大约 5 秒后更新数据时,用户所做的选择和分组丢失了。
http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb
无论如何要保留选择和/或分组吗?
您将不得不在 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);
我们将在下一个版本中添加一个 primaryKey 选项,该选项将允许网格关闭它而不是引用。