我已经在寻找解决方案,但是对于我来说似乎没有任何效果。
我在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/