【发布时间】:2014-01-02 23:52:32
【问题描述】:
AngularJS 在等待任何承诺的控制器依赖解决时停止处理 UI 事件。如果这些依赖项中的任何一个依赖于挂起的 API 调用,应用程序就会变得无响应。
如何设计一个 AngularJS 应用程序,在 ui-router 解析外部控制器依赖项时保持响应?
CoffeeScript 示例:
注入accountBase的/accounts/:account_id的路由定义:
$stateProvider.state('accounts',
abstract: true
url: '/accounts/:account_id'
templateUrl: "/views/accounts/index.html"
resolve:
accountBase: ($stateParams, $q, Restangular, $rootScope, Session) ->
deferred = $q.defer()
base = Restangular.one('accounts', $stateParams.account_id)
base.get().then (result) ->
console.log 'resolved accounts', result
deferred.resolve(result)
, (error) ->
deferred.reject('cannot resolve user account')
return deferred.promise
).state('users', ... # continues
控制器示例
app.controller 'DomainsCtrl', ['$scope', 'accountBase', ($scope, accountBase) ->
# use resolved accountBase for further processing
accountBase.get().then ->
console.log 'do something here'
return
【问题讨论】:
标签: angularjs coffeescript dependencies promise angular-ui-router