Angular-无法解析前端的json响应

时间:2015-10-08 11:31:16

标签: json angularjs

我使用以下代码创建了一个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。

1 个答案:

答案 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();