我想要一个同步的列表,所以我(现在)每秒轮询一次。但我似乎有问题 - 它不起作用:
app.controller("MainController", function ($scope, $http, $timeout) {
$scope.responsePromise = $http.get("http://localhost:52219/API/GetList");
$scope.responsePromise.success(function (data, status, headers, config) {
$scope.model.list = JSON.parse(data);
$timeout(function ()
{
console.log("reload");
$scope.responsePromise = $http.get("http://localhost:52219/API/GetList");
}, 1000);
});
我的目标是每隔X秒从与数据库通信的服务器中检索一个列表。任何人都知道为什么不垃圾邮件“重装”?我只得到一次
答案 0 :(得分:1)
您正在寻找$interval,而不是$ timeout。
来自$ interval docs的:
Angular的window.setInterval包装器。 fn函数每延迟几毫秒执行一次。
还有:
注意:完成后,必须明确销毁此服务创建的间隔。特别是当控制器的范围或指令的元素被破坏时,它们不会被自动销毁。你应该考虑到这一点,并确保在适当的时候总是取消间隔。
答案 1 :(得分:0)
正如@Nitsan Baleli所说,你应该使用服务“$ interval”而不是“$ timeout”。
这里提出的问题,请参阅答案:Angular JS $timeout vs $interval
我的目标是每隔X秒从与数据库通信的服务器中检索一个列表。
我重写了你的代码,以便它符合你的目标,它变为:
app.controller("MainController", function ($scope, $http, $timeout) {
var $scope.model = {
list:[]
};
var getData = function(){
$http.get("http://localhost:52219/API/GetList").success(function(data){
$scope.model.list = JSON.parse(data);
});
};
getData(); // for the first call
$interval(function (){
getData();
}, 1000);
});
请参阅此处的plunkr演示:http://plnkr.co/edit/xCbGGyKPTeJtg7TeKKyE?p=preview