我知道为什么它不起作用,但不知道如何解决这个问题,我已经查看了各种类似的问题/答案,但我无法解决我的问题。
我正在尝试在页面加载时调用服务来列出数据表,或者让我们将其称为URL列表。
模型只是{ urls }
会返回一个网址数组,以后我会使用ng-repeat。
我的控制器:
function UrlListCtrl($scope, UrlService){
$scope.urls = UrlService.getUrls();
}
服务:
function UrlService($http) {
return {
getUrls: getUrls
}
function getUrls() {
console.log('Fetching Urls...');
return $http.get('urls/get')
.then(function(response) {
console.log('response:', response.data);
this.urlsResults = response.data;
});
}
}
该服务确实运行,但它不会更新视图。我该如何解决这个问题?
答案 0 :(得分:0)
$http.get()是一个返回promise的异步操作。您必须等待履行此承诺,然后才能从响应中获取数据。
在您的代码$scope.urls = UrlService.getUrls();
中分配了承诺,而不是结果$scope.urls
,并且在操作结束时视图从未更新过。
控制器:
function UrlListCtrl($scope, UrlService){
UrlService.getUrls().then(function(response) {
$scope.urls = response.data;
});
}
服务:
function UrlService($http) {
return {
getUrls: getUrls
}
function getUrls() {
console.log('Fetching Urls...');
return $http.get('urls/get');
}
}