使用 UI-Router,我怎样才能对从父级到子级的状态更改执行操作?
With UI-Router how can I do an action on change of state from parent to child?
我曾尝试使用 onExit
但如果我从 home
到 home.abc
或 home
到 home.def
那么当我将 onExit 置于 home
状态时,这不会触发状态更改。
有什么方法可以检测到从 home
到 home.abc
或 home.def
或 .. 的变化?
我们可以使用这段代码,它在状态更改时检查,如果下一个状态名称确实包含前一个状态名称(如果下一个状态是前一个状态的子状态,这应该是真的)
.run(['$rootScope', '$state', function($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function(evt, to, tparams, from, fparams) {
var formChildToParent = from.name !== ""
&& to.name.indexOf(from.name) >= 0;
if(formChildToParent)
{
alert("going from parent " + from.name + " to child " + to.name)
}
});
}])
这只是一个简单的草稿,可以通过更多的检查来扩展...但这个概念应该是合适的。检查一下 here
我曾尝试使用 onExit
但如果我从 home
到 home.abc
或 home
到 home.def
那么当我将 onExit 置于 home
状态时,这不会触发状态更改。
有什么方法可以检测到从 home
到 home.abc
或 home.def
或 .. 的变化?
我们可以使用这段代码,它在状态更改时检查,如果下一个状态名称确实包含前一个状态名称(如果下一个状态是前一个状态的子状态,这应该是真的)
.run(['$rootScope', '$state', function($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function(evt, to, tparams, from, fparams) {
var formChildToParent = from.name !== ""
&& to.name.indexOf(from.name) >= 0;
if(formChildToParent)
{
alert("going from parent " + from.name + " to child " + to.name)
}
});
}])
这只是一个简单的草稿,可以通过更多的检查来扩展...但这个概念应该是合适的。检查一下 here