Angularjs在使用routeProvider时自动刷新数据

时间:2017-10-04 12:38:43

标签: angularjs angular-routing

我试图在一段时间内更新表上的数据。代码有一个带有URL和控制器的routeProvider,如下所示。我正在使用init()来获取控制器中的数据。如果我在$ interval()中使用init()方法,则使用先前的值更新表。我的意思是如果没有新值,那么它就有10条记录,它就变成了20条记录。如何仅使用新值进行更新。

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

或者如果我在routeProvider中使用resolve来进行查询,我怎么能在$ interval()内调用该方法

1 个答案:

答案 0 :(得分:2)

你需要在为其添加新值之前清除数组。数组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)