2016-09-06 93 views
4

关于堆栈溢出问题有很多类似的问题,但是使用这些技巧并没有帮助。

我正在学习angular.js,并且正在API上尝试使用$ http.get,但在将响应分配给变量时遇到了问题。

下面的get请求在加载时运行。 (这是我app.js文件)

var app = angular.module('store',[]); 
    app.controller("StoreController", function($scope,$http){ 
     var request = $http.get('/test').then(function (response) { 
      $scope.data = response; 
      return response; 
     }); 
     request.then(function (data) { 
      this.products = $scope.data 
     }); 
    }); 

的下面是从对请求的响应(I可以在浏览器的控制台视图中看到这一点,但不被显示的数据。)

[ 
     { 
     name: 'Dowayne', 
     surname: 'Breedt', 
     catchphrase: 'wallawallabingbangamIright?', 
     reviews: [ 
       { 
       stars: 5, 
       body: 'i love stuff', 
       soldOut: false, 
       }, 
       { 
       stars: 4, 
       body: 'meh', 
       soldOut: true, 
       }, 
       { 
       stars: 3, 
       body: 'shittake mushrooms', 
       soldOut: false, 
       }, 
       ] 
     } 
    ]; 

这是所有垃圾数据(只是为了练习),但我不能理解为什么它不会显示在HTML页面上,如果我将上面的代码片段直接分配给this.products,那么它的工作原理完美/

我错过了什么?

谢谢。

+1

为什么你使用.then()两次 –

+0

你在浏览器中显示的是什么对象数据或产品? –

+0

我编辑它并删除额外的。然后,它和以前一样,浏览器应该显示的所有内容都是每个评论的主体,并且它是这样做的,但是当我通过http.get获取信息时,这是行不通的。当我查看检查元素时,我可以看到/ test的请求,并得到上述响应的响应 –

回答

1

使用时少辉然后使用。数据属性来获取数据。

var app = angular.module('store',[]); 
app.controller("StoreController", function($scope,$http){ 
    var request = $http.get('/test').then(function (response) { 
     $scope.data = response.data; 
     return response.data; 
    }); 
}); 
+0

嗨。感谢您的回复,我用上面的代码替换了我的请求,然后将响应分配给this.products,但它仍不会将该对象分配给该变量。 –

+0

嗨,这结束了工作,我意识到,而不是手动格式化JSON的API端,我不得不json_encode一个正常的PHP数组。 –

-1

你可以请尝试下面的语法?

$http.get('/test').success(function(response) { 
     $scope.products= response.data; 

    }); 
+0

您好,感谢我。试过这个,它仍然获得与我的请求相同的数据,但仍然不显示应该的信息。我不应该以不同的方式格式化我的回复吗? –

相关问题