3

ng-gridセットアップを使用しようとしていますが、次の問題があります。

私が表示しているデータは、5秒程度ごとに非常に頻繁に変更されます。ただし、リストに追加される新しいデータはそれほど多くありません。

データをng-gridに設定すると、ユーザーはデータを見始めることができます。しかし、約5秒後にデータを更新すると、ユーザーが行った選択とグループ化が失われます。

http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb

とにかく選択および/またはグループ化を維持することはありますか?

4

2 に答える 2

3

forループでデータを通過してマージする必要があります。配列全体を置き換えると、オブジェクト参照が置き換えられるため、行った変更はすべて失われます。

もう1つのオプションは、選択を別の配列または辞書に保持し、配列を置き換えた後にプロパティを再マップすることです。ここでは、選択配列に変更が保持されるように、参照型を使用する必要があることに注意してください。

[疑似コード] のように:

// 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 に答える