2017-10-04 2 views
0

시간 간격에 따라 테이블의 데이터를 업데이트하려고합니다. 아래 코드와 같이 routeProvider에 URL과 컨트롤러가 있습니다. 컨트롤러에서 데이터를 가져 오는 데 init()을 사용하고 있습니다. $ interval() 안에 init() 메서드를 사용하면 테이블이 이전 값으로 업데이트됩니다. 새로운 값이없고 10 개의 레코드가 있다면 20 개의 레코드가됩니다. 새 값만 사용하여 업데이트하는 방법.routeProvider를 사용하는 동안 Angularjs 자동 새로 고침

최소 app.js 코드

App.controller('PlantCtrl', [ '$scope', 'PlantDetails', '$interval' 
, function($scope, PlantDetails, $interval,) { 

$scope.availablePlantDetailsTemp = []; 
    $scope.availablePlantDetails = []; 

init(); 

    function init() { 
     $scope.availablePlantDetailsTemp = PlantDetails.resource2.query(function(response) { 
     angular.forEach(response, function(item) { 
      if (item) { 
       $scope.availablePlantDetails.push(item); 
      } 
     }); 
     }); 
      } 
$interval(function() { 
       init(); 
       }, 5000); 
} ]); 

또는 내가

답변

2

당신은 배열을 삭제해야 jsut $ 간격() 내부의 메소드를 호출 할 수있는 방법 쿼리를 수행 할 routeProvider 내부 결의를 사용할 경우 추가하기 전에 새로운 가치. 배열 push 메서드는 배열에 새 값을 추가하므로 문제가 발생합니다.

function init() { 
     $scope.availablePlantDetails = []; 
     $scope.availablePlantDetailsTemp = PlantDetails.resource2.query(function(response) { 
     angular.forEach(response, function(item) { 
      if (item) { 
       $scope.availablePlantDetails.push(item); 
      } 
     }); 
     }); 

$interval(function(){ 
Init() 
},1*2000) 
+0

팁 주셔서 감사합니다. 해결 방법을 알려주시겠습니까? 해결 코드도 업데이트 할 것입니다. – user7620991

+0

나는 이미 그것에 대한 대답을 추가했습니다. 내 대답의 두 번째 줄을 참조하십시오. – Ved

+0

그래, 괜찮아. 나는 것을보고. $ interval() 내부의 컨트롤러에서 쿼리를 호출하는 방법을 알고 싶습니다. – user7620991