这是状态配置
var app = angular.module('plunker', ['ui.router']);
app.config(function($stateProvider) {
$stateProvider
.state('root', {
abstract: true,
resolve: {
preloadData: function() {
console.log("preloadData");
return true;
}
}
})
.state('root.home', {
resolve: {
test: function() {
console.log('Home')
return true;
}
}
})
.state('root.login', {
resolve: {
test: function() {
console.log('Login')
return true;
}
}
});
});
这是plnkr http://plnkr.co/edit/rMVbxErZyStt97JifJlj。打开开发控制台,然后单击按钮。您会看到preloadData
仅在状态第一次更改时被调用。对于未来的状态更改,不会调用它。
这种行为是/正常吗?有没有办法在每次状态变化时强制调用父母的决议?
答案 0 :(得分:4)
"解决"当你从一个"局外人那里去那个州(或其中一个后代)时,一个特定国家的运行" state - 即所讨论状态的层次树之外的状态。然后,它的后代和它自己之间的导航不会重新运行"解决"和控制器。
换句话说,给出以下状态层次结构示例:
A B
/ /
AA C
/ \
C1 C2
然后,从A切换到B将运行B的控制器并且"解析",因为A在B树之外。然后切换到C(或C1或C2),然后再切换回B,不会重新运行B'
如果你然后切换回A(或AA),那么A将会结算。