我使用以下代码创建了一个httpRequest获取一些项目:
factory.getBanners = function() {
$http({
method: 'GET',
url: 'http://localhost:2100/v1/items/getBanners'
}).then(function successCallback(response) {
console.log(response);
return response;
});
};
在控制器中我按如下方式处理:
store.controller('bannerCtrl', ['$scope', 'productService', function($scope, productService){
$scope.init = function() {
$scope.banners = productService.getBanners();
}
$scope.init();
}]);
在前端我尝试使用
显示数据<div ng-controller="bannerCtrl">
<div data-ng-repeat="banner in banners">
<li> {{banner.bannerAltText}} </li>
</div>
</div>
但它没有显示任何东西。它没有在控制台上给出任何错误。我该如何解决这个问题。这里的banners是一个数组,其每个元素都包含bannerAltText。
答案 0 :(得分:1)
您的getBanners
- 功能无法按照您的想法运作。它什么都不返回。 return
函数中的then
语句仅从then
- 函数返回,而不是从getBanners
返回。问题是你试图以同步的方式使用异步函数。而是让getBanners
返回一个承诺:
factory.getBanners = function() {
return $http({
method: 'GET',
url: 'http://localhost:2100/v1/items/getBanners'
}).then(function successCallback(response) {
return response.data;
});
};
在控制器中使用该承诺:
$scope.init = function() {
productService.getBanners().then(function(banners) {
$scope.banners = banners;
});
}
$scope.init();