【发布时间】:2017-07-13 14:49:35
【问题描述】:
我正在使用 ui - router 开发 Angular 应用程序。
我创建了根状态,这是一种旨在解决异步的抽象状态。依赖关系。
因此,从我的角度来看,每个子状态都应该能够在自己的解析状态属性中使用这些依赖项。
所以如果abstract根状态解析异步依赖,子状态也解析异步依赖,后者应该等待根依赖解决,然后再启动自己的resolve方法。对吧?
这是代码示例,它说明了我的意思:
在相应的解析中使用的基于承诺的异步方法
public iAmInTheRootState(): IPromise<any> {
let deferred = this._$q.defer();
this._$timeout(() => {
deferred.resolve();
}, 3000);
return <IPromise<any>> deferred.promise;
}
public iAmInTheSubState(): IPromise<any> {
let deferred = this._$q.defer();
this._$timeout(() => {
deferred.resolve();
}, 100);
return <IPromise<any>> deferred.promise;
}
根抽象状态:
$stateProvider
.state('app', {
url: '/',
abstract: true,
templateUrl: 'layout/app-view.html',
resolve: {
auth: function (Auth: IAuthService) {
'ngInject';
return Auth.iAmInTheRootState().then(() => {
console.log('I am the root state, so I should be first');
});
}
}
});
子状态是子状态:
$stateProvider.state('app.my-calls', {
url: '',
controller: 'MyCallsController',
controllerAs: '$ctrl',
templateUrl: 'states/my-calls/my-calls.html',
resolve: {
secondAuth: (Auth: IAuthService) => {
'ngInject';
return Auth.iAmInTheSubState().then( () => {
console.log('although I am faster I should be second because i am in the sub state');
});
}
}
})
但输出与我的预期不同:
【问题讨论】:
标签: javascript angularjs promise angular-ui-router angular-promise