gpt4 book ai didi

javascript - Angular 1 : How to wait for promise to resolve in parent controller?

转载 作者:行者123 更新时间:2023-12-03 06:36:09 24 4
gpt4 key购买 nike

我已经为此寻找了解决方案,但似乎对我的情况没有任何作用。

我在 CoffeeScript 中的两个 Angular Controller 之间共享数据,如下所示:

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)

抛出

cannot read property 'payment_methods' of undefined

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

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

以及其他在父 Controller 中的 $scope.account 解决后运行的内容?

最佳答案

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

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

并在 accountPaymentMethodsCtrl 中调用此函数并等待 Promise 解析,就像您在 accountCtrl 中所做的那样。

这会起作用:)

干杯!

关于javascript - Angular 1 : How to wait for promise to resolve in parent controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com