这是plnkr:http://plnkr.co/edit/wfIFA01kfG1zggsPo7Q9
我有一个抽象的父状态' app'和两个孩子的状态' app.home'和' app.signin'。父状态必须解决一些异步的东西。
app.core :
$stateProvider
.state('app', {
url: '',
abstract: true,
// has to be resolved by any child state, except app.auth
resolve: {
Something: function($http) {
// real delay
return $http.get('http://httpbin.org/delay/5');
}
}
});
app.home :
$stateProvider
.state('app.home', {
url: '/home',
views: {
'main@' : {
template: '<div>I am home page</div> <a ui-sref="app.signin">Sign in</a>'
}
}
});
app.signin
$stateProvider
.state('app.signin', {
url: '/',
views: {
'main@' : {
template: '<div>I am signin page </div> <a ui-sref="app.home">Home page</a>'
}
}
});
我希望任何子状态也需要Something
,app.signin
除外。我怎么能这样做?
另外值得一提的是,我没有在我的孩子状态中描述任何解析器。但他们仍然等到父母完成了,我想到了(引自ui-router doc):
如果您愿意,必须将解析密钥注入子状态 在实例化之前等待promises得到解决 孩子。
而且我不知道为什么儿童州仍在解决父母的依赖。
答案 0 :(得分:0)
因此,ideia是创建app.signin将依赖的另一个抽象状态。这个掠夺者证明了(来自你的掠夺者的叉子):http://plnkr.co/edit/kpfbylbBTVX8Erm5cgoF?p=preview
(function() {
'use strict';
angular
.module('app.auth', [
'app.core'
])
.config(function ($stateProvider) {
$stateProvider
.state('app2', {
url: '',
abstract: true
})
.state('app2.signin', {
url: '/',
views: {
'main@' : {
template: '<div>I am signin page </div> <a ui-sref="app.home">Home page</a>'
}
}
});
});
})();