【问题标题】:Using 'Done' instead of 'Success' in Angular promises在 Angular 承诺中使用“完成”而不是“成功”
【发布时间】:2014-08-29 19:33:32
【问题描述】:

我在使用 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
])

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    很可能因为这个库不是针对 AngularJS,它没有做$scope.$apply() 来触发摘要循环,因此 html 没有得到更新。

    修复将在回调中使用$scope.$apply() 包装完成的分配。对此的 JavaScript 修复将是

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

    由于我没有使用这个库,我可能在done 回调实现方面有误。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 2015-01-22
      • 2017-06-17
      • 2014-11-24
      • 1970-01-01
      • 2015-04-24
      • 2016-03-27
      • 2016-04-24
      相关资源
      最近更新 更多