使用 UI-Router,我怎样才能对从父级到子级的状态更改执行操作?

With UI-Router how can I do an action on change of state from parent to child?

我曾尝试使用 onExit 但如果我从 homehome.abchomehome.def 那么当我将 onExit 置于 home 状态时,这不会触发状态更改。

有什么方法可以检测到从 homehome.abchome.def 或 .. 的变化?

a working example

我们可以使用这段代码,它在状态更改时检查,如果下一个状态名称确实包含前一个状态名称(如果下一个状态是前一个状态的子状态,这应该是真的)

.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