2013-01-16 70 views
3

我試圖使用ng-grid安裝程序,我遇到以下問題。angularjs ng-grid保持選擇更新

我顯示的數據非常頻繁地變化,每隔5秒左右。但是並沒有很多新的數據被添加到列表中。

當我將數據設置到ng-grid時,用戶可以開始查看數據。但是當我約5秒後更新數據時,用戶所做的選擇和分組丟失。

http://plnkr.co/edit/eK1aeRI67qMROqDUtPnb

反正是有保留的選擇和/或分組?

回答

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

不再需要(由timothyswt回答)。只需將primaryKey屬性添加到gridOptions並指定具有唯一值的列即可。 – fnx

2

我們將要增加,在未來版本的PrimaryKey選項將允許電網鍵關機,與其引用。

+0

謝謝,這真的很棒。任何改變你會知道哪個下一個版本的主鍵被添加? –

+0

對不起,我可以更好地搜索一下,發現問題https://github.com/angular-ui/ng-grid/issues/233 - 所以它在2.1版本中發佈 –