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