私はui - routerを使って角型アプリケーションを開発しています。UIルータ:理解の解決は、ルートサブ状態の流れを約束します
私は非同期を解決するための抽象的なものであるルート状態を作成しました。依存関係。 私の観点からみると、すべてのサブ状態は、それ自身の状態プロパティを解決する際にそれらの依存関係を使用できるはずです。 abstract
ルート状態が非同期依存関係を解決し、サブ状態もasyc依存関係を解決する場合、後者は、自身の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');
});
}
}
})
しかし、出力は私の期待とは異なります。あなたの例では