2017-10-04 3 views
0

時間の経過とともにテーブルのデータを更新しようとしています。コードには、以下に示すようなURLとコントローラを持つrouteProviderがあります。私は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

私はすでにそのための答えを追加しました。私の答えの2行目を参照してください – Ved

+0

うん、それは大丈夫です。私はそれを観た。私は$ interval()内のコントローラからクエリを呼び出す方法を知りたいです – user7620991

関連する問題