我在使用 Contentful.js 库检索 Angular 应用程序中的内容时遇到了问题。它使用带有 done(data)
的函数,而不是带有 success(data)
回调的普通 $http.get
。我可以将 $scope.lists
值设置为返回的数据,但由于某种原因它没有显示在 HTML 中。
这适用于使用标准 $http
的详细 View :
$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()
方法的 ListView :
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
])
有什么想法吗?
最佳答案
很可能是因为这个库不是针对 AngularJS 的,所以它没有执行 $scope.$apply()
来触发摘要周期,因此 html 没有得到更新。
修复方法是使用 $scope.$apply()
将回调中完成的分配包装起来。JavaScript 对此的修复方法是
$scope.$apply(function() {
$scope.lists = data
});
由于我没有使用这个库,所以我的 done
回调实现可能是错误的。
关于javascript - 在 Angular Promise 中使用 'Done' 而不是 'Success',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567113/