有没有办法在 AngularUI 路由器中的任何子解析之前解决承诺
Is there a way to resolve a promise before any sub-resolves in AngularUI Router
我在 coffeescript 中有 2 个状态...
stateProvider.state 'test',
...
resolve:
user: (LongRunning)->
LongRunning.authenticate().then ->
console.log("We are authenticated!")
stateProvider.state 'test.child',
...
resolve:
other: (AfterAuth)->
AfterAuth.soSomethingWithAuth().then ->
console.log("We are done!")
当然这是行不通的,因为子解析在父的auth方法解析之前就已经开始了。这意味着第二个函数不会被验证并导致整个状态失败。
现在它不一定是状态路径的一部分,但它需要在调用解析函数时完全完成。
在调用子方法之前,如何确保父函数已完全解析?
错误 (?) 解决方案
我能想到的一个答案是使用手动 bootstrap 过程。但是,这很乏味,因为我需要重新连接所有服务。反正我可以在Angular里面做吗?
您使用 AngularUI 路由器用于 Angular 2 还是 AngularJS?我认为这是 AngularJS,因为您使用 coffeescript 和 AngularUI 路由器。这是 Angular 标签,不是 AngularJS。
无论如何,在 AngularUI 路由器中,一个解析器可以依赖于另一个解析器。类似的东西:
function firstStep($stateParams, resolveStatus) {
return $q.resolve();
}
resolve: {
firstStep: firstStep,
secondStep: ['firstStep', function (firstStep) {
...
}]
}
我在 coffeescript 中有 2 个状态...
stateProvider.state 'test',
...
resolve:
user: (LongRunning)->
LongRunning.authenticate().then ->
console.log("We are authenticated!")
stateProvider.state 'test.child',
...
resolve:
other: (AfterAuth)->
AfterAuth.soSomethingWithAuth().then ->
console.log("We are done!")
当然这是行不通的,因为子解析在父的auth方法解析之前就已经开始了。这意味着第二个函数不会被验证并导致整个状态失败。
现在它不一定是状态路径的一部分,但它需要在调用解析函数时完全完成。
在调用子方法之前,如何确保父函数已完全解析?
错误 (?) 解决方案
我能想到的一个答案是使用手动 bootstrap 过程。但是,这很乏味,因为我需要重新连接所有服务。反正我可以在Angular里面做吗?
您使用 AngularUI 路由器用于 Angular 2 还是 AngularJS?我认为这是 AngularJS,因为您使用 coffeescript 和 AngularUI 路由器。这是 Angular 标签,不是 AngularJS。
无论如何,在 AngularUI 路由器中,一个解析器可以依赖于另一个解析器。类似的东西:
function firstStep($stateParams, resolveStatus) {
return $q.resolve();
}
resolve: {
firstStep: firstStep,
secondStep: ['firstStep', function (firstStep) {
...
}]
}