使用'完成'而不是成功'在Angular的承诺

时间:2014-08-29 11:09:43

标签: javascript angularjs coffeescript angularjs-scope angular-promise

我遇到了一个问题,我正在使用Contentful.js库来检索Angular应用中的内容。它使用$http.get函数,而不是使用success(data)回调的普通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 个答案:

答案 0 :(得分:1)

很可能因为这个库没有针对AngularJS,所以它没有$scope.$apply()来触发摘要周期,因此html没有得到更新。

修复将使用$scope.$apply()回调完成回调。对此的JavaScript修复将是

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

由于我没有使用这个库,因此done回调实现可能会出错。