2013-01-16 2 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). gridOptions에 primaryKey 속성을 추가하고 고유 한 값이있는 열을 지정하기 만하면됩니다. – fnx

2

우리는 그리드 참조 대신의 키 오프 할 수 있도록 다음 버전에서 기본 키 옵션을 추가 할 것입니다.

+0

정말 고마워. 어떤 기본 키가 다음 버전에 추가되는지 알고 있습니까? –

+0

아, 죄송합니다. 조금 더 검색하여 https://github.com/angular-ui/ng-grid/issues/233 문제를 발견했을 수 있습니다. –