Ich habe nach Lösungen dafür gesucht, aber in meinem Fall scheint nichts zu funktionieren.angular1: Wie kann man warten, bis sich das Versprechen im übergeordneten Controller löst?
Ich teile Daten zwischen zwei Winkeln Controllern in Coffeescript wie folgt:
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)
Und ich die Daten in einer Fabrik in etwa so:
angular.module('app').factory 'accountFactory', ->
account = {
payment_methods: {}
set: (account) ->
@account = account
@account.payment_methods = account.payment_methods
}
account
Hier ist das Problem: Wenn ich Aktualisieren Sie die Seite,
$scope.displayedPaymentMethods = [].concat($scope.account.payment_methods)
wirft
nicht Eigentum 'payment_methods' undefinierter
weil $ scope.account in der übergeordneten Steuerung gelesen noch nicht abgeklungen ist. Wie bekomme ich diese Zeile
$scope.displayedPaymentMethods = [].concat($scope.account.payment_methods)
und andere zu laufen, nachdem $ scope.account im übergeordneten Controller wurde behoben?