我已经在寻找解决方案,但是对于我来说似乎没有任何效果。

我在coffeescript中的两个角度控制器之间共享数据,如下所示:

angular.module('app').controller 'accountCtrl', ($scope, $state, accountFactory) ->

    Api.Account.get(token: $scope.current_user.account_id).$promise.then ((response) ->
        accountFactory.set(response)
        $scope.account = accountFactory.account
    )

angular.module('app').controller 'accountPaymentMethodsCtrl', ($scope, $state, Api, accountFactory) ->

    $scope.account = accountFactory.account
    $scope.displayedPaymentMethods = [].concat($scope.account.payment_methods)


我将数据存储在这样的工厂中:

angular.module('app').factory 'accountFactory', ->

    account = {
        payment_methods: {}

        set: (account) ->
            @account = account
            @account.payment_methods = account.payment_methods
    }

    account


这是问题所在:
当我刷新页面时,

$scope.displayedPaymentMethods = [].concat($scope.account.payment_methods)


抛出


  无法读取未定义的属性“ payment_methods”


因为父控制器中的$ scope.account尚未解析。我如何获得这条线

$scope.displayedPaymentMethods = [].concat($scope.account.payment_methods)


和其他要在父控制器中的$ scope.account解决后运行?

最佳答案

好吧,将下面的API调用包装为函数

Api.Account.get(token: $scope.current_user.account_id).$promise.then ((response) ->
    accountFactory.set(response)
    $scope.account = accountFactory.account
)


并在accountPaymentMethodsCtrl中调用此函数,然后像在accountCtrl中所做的那样等待promise解决。

这将工作:)

干杯!

关于javascript - angular1:如何在父 Controller 中等待 promise 解决?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38195102/

10-09 20:10
查看更多