0

我遇到了一個問題,我正在使用Contentful.js庫來檢索Angular應用中的內容。使用success(data)回調代替正常的$http.get,它使用done(data)的函數。我可以將$scope.lists的值設置爲返回的數據,但由於某些原因它不會顯示在HTML中。在角度承諾中使用'完成'而不是'成功'

這適用於使用標準$http細節圖:

$http.get('https://cdn.contentful.com/spaces/xxxxxxx/entries?sys.id=' + $routeParams.listId + '&include=10&access_token=xxxxxxxx').success (data) -> 
      $scope.list = data 
      console.log $scope.list 

這並不適用於列表視圖使用done()方法工作:

client = contentful.createClient 
     accessToken: 'xxxxxxxx' 
     space: 'xxxxxxxxx' 

listControllers.controller('ListListCtrl', ['$scope', '$http', ($scope, $http) -> 
    $scope.lists = "" 
    client.entries({'content_type': 'xxxxxxxx', 'include': 1}).done (data) -> 
     $scope.lists = data 
     console.log $scope.lists 
]) 

任何想法?

回答

1

很可能是因爲這個庫不是針對AngularJS的,它不會在做$scope.$apply()來觸發摘要循環,因此html沒有得到更新。

的解決將是包裝在回調完成assingment與$scope.$apply() .The JavaScript的修復程序,這將是

$scope.$apply(function() { 
    $scope.lists = data 
}); 

,因爲我沒有使用這個庫我可能是done回調實現錯在這裏。

+0

完全有效。謝謝 – 2014-08-29 11:58:00