Angular UI 路由器究竟可以触发状态更改?
What exactly can trigger a state change with Angular UI Router?
我已将 onExit 回调添加到我的状态之一,并发现我的应用程序正在退出并重新进入我的状态,而我认为它不是。我查看了他们的文档,但没有找到任何内容可以准确解释什么会导致状态转换。
我有这样的东西
$stateProvider
.state('ParentState', {
abstract: true,
url: '/parent',
data: {
flow: 'Parent'
},
views: {
'main': {
template: indexTpl
}
},
onExit: function() {
console.log('onExit');
}
})
.state('ChildState', {
parent: 'ParentState',
url: '?a&b',
resolve: {
resolvedData: ['$stateParams', 'service', function($stateParams, service) {
service.resolveData($stateParams);
}
},
views: {
...
}
};
我注意到的行为是,我将在 /parent?a=something&b=somethingElse 中,然后触发 a 或 b 更改为不同值的内容,这导致再次解析为 运行 .我不希望 'ParentState' 退出,因为变量在子状态中发生变化,但是正在调用 onExit。
我想知道什么情况下可以触发状态更改,以便我可以使用 onExit 回调并确切知道它何时会被调用。
根据the docs,
A state corresponds to a "place" in the application in terms of the
overall UI and navigation. A state describes (via the controller /
template / view properties) what the UI looks like and does at that
place.
因此,如果视图属性更改,状态会从 ChildState
更改为另一个 ChildState
。然后,因为 ChildState
继承了 ParentState
,所以 onExit
被解析为第一个 ChildState
。
我已将 onExit 回调添加到我的状态之一,并发现我的应用程序正在退出并重新进入我的状态,而我认为它不是。我查看了他们的文档,但没有找到任何内容可以准确解释什么会导致状态转换。
我有这样的东西
$stateProvider
.state('ParentState', {
abstract: true,
url: '/parent',
data: {
flow: 'Parent'
},
views: {
'main': {
template: indexTpl
}
},
onExit: function() {
console.log('onExit');
}
})
.state('ChildState', {
parent: 'ParentState',
url: '?a&b',
resolve: {
resolvedData: ['$stateParams', 'service', function($stateParams, service) {
service.resolveData($stateParams);
}
},
views: {
...
}
};
我注意到的行为是,我将在 /parent?a=something&b=somethingElse 中,然后触发 a 或 b 更改为不同值的内容,这导致再次解析为 运行 .我不希望 'ParentState' 退出,因为变量在子状态中发生变化,但是正在调用 onExit。
我想知道什么情况下可以触发状态更改,以便我可以使用 onExit 回调并确切知道它何时会被调用。
根据the docs,
A state corresponds to a "place" in the application in terms of the overall UI and navigation. A state describes (via the controller / template / view properties) what the UI looks like and does at that place.
因此,如果视图属性更改,状态会从 ChildState
更改为另一个 ChildState
。然后,因为 ChildState
继承了 ParentState
,所以 onExit
被解析为第一个 ChildState
。