2016-09-06 120 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

您好,感謝我。試過這個,它仍然獲得與我的請求相同的數據,但仍然不顯示應該的信息。我不應該以不同的方式格式化我的回覆嗎? –

相關問題