我试图在一段时间内更新表上的数据。代码有一个带有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()内调用该方法
答案 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)