2017-10-04 2 views
0

Je suis en train de mettre à jour les données sur une table sur une période de temps.Le code a un routeProvider avec une URL et un contrôleur comme indiqué ci-dessous. J'utilise init() pour obtenir les données dans le contrôleur. Si j'utilise la méthode init() dans $ interval(), la table est mise à jour avec les valeurs précédentes. Je veux dire s'il n'y a pas de nouvelles valeurs et 10 enregistrements sont là, il devient 20 enregistrements. Comment mettre à jour avec de nouvelles valeurs seul.Angularjs actualisation automatique pour les données lors de l'utilisation routeProvider

Code app.js Minimal

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); 
} ]); 

Ou si je resolve l'intérieur routeProvider pour faire la requête comment puis-je appeler la méthode à l'intérieur de l'intervalle de $()

Répondre

2

Vous jsut besoin de tableau avant d'ajouter effacer nouvelle valeur à cela. Les méthodes Array push ajoutent de nouvelles valeurs au tableau, d'où le problème.

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

Merci pour le conseil. Pourriez-vous aussi me dire comment le faire avec résolution? Je vais également mettre à jour mon code de résolution. – user7620991

+0

J'ai déjà ajouté une réponse pour cela. Voir la deuxième ligne de ma réponse – Ved

+0

Ouais c'est bien. J'ai vu ça. Je veux savoir comment appeler la requête du contrôleur à l'intérieur de $ interval() – user7620991