我试图在AngularJS服务中每隔5秒将一个项目推送到一个数组,但我仍然没有定义'项目未定义'在动态添加1项后......
我已经玩了这个简单的代码一个多小时了,我确定它有点傻但我无法弄明白。 :/
app.service('ItemService', function() {
var items = [9000];
this.addItem = function () {
items.push(Math.random());
}
setInterval(this.addItem(), 5000);
return {
get: function() {
return items;
}
}
});
答案 0 :(得分:3)
您正在调用addItem()
并将其返回值传递给setInterval()
- 而不是函数本身。
应该是:
setInterval(this.addItem, 5000); // no () after addItem
答案 1 :(得分:3)
您正在使用角色,因此您不应该使用setInterval
,而是使用Angular提供的$interval
服务。
加上对@techfoobar的正确观察,将导致您正在寻找的正确行为:
app.service('ItemService', ['$interval', function($interval) {
var items = [9000];
this.addItem = function () {
items.push(Math.random());
}
$interval(this.addItem, 5000);
return {
get: function() {
return items;
}
}
}]);
答案 2 :(得分:0)
尝试使用$ interval()服务而不是setInterval
$interval($scope.item, "time_interval");
答案 3 :(得分:0)
时间函数如window.setInterval,在angularjs中包含在$ interval(https://docs.angularjs.org/api/ng/service/ $ interval)中。 Angular管理间隔函数,就像一个承诺,以确保更多地控制计时器。