Angularjs $transitions.onStart不';t触发器在角块内部。运行块

Angularjs $transitions.onStart不';t触发器在角块内部。运行块,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我希望能够捕获以前的状态,但是,我似乎不明白为什么$transitions.onStart函数不能正常启动: // angular run block $transitions.onStart({ from: '*', to: '*' }, (trans) => { $rootScope.$previousState = trans.$from().name; console.log('HERE?', $rootScope.$previousState) })

我希望能够捕获以前的状态,但是,我似乎不明白为什么
$transitions.onStart
函数不能正常启动:

  // angular run block

  $transitions.onStart({ from: '*', to: '*' }, (trans) => {
    $rootScope.$previousState = trans.$from().name;
    console.log('HERE?', $rootScope.$previousState)
  });
console.log
不会触发,每当我在
控制器中引用
$rootScope
时,我看不到我在
块中定义的
$previousState
属性

   // sample directive

   restrict: 'A',
    link: (scope, elem) => {
      elem.bind('click', () => {
        console.log('>>>>', $rootScope.$previousState)
        $window.history.back();
      });
    }
更新(修复)但不确定原因:

因此,我将代码从
$transitions.onStart({from:'*',to'*'})
更新为以下内容:

  $transitions.onStart({}, (trans) => {
    $rootScope.$previousState = trans.$from().name;
  });

这是有效的。奇怪的是,以前的语法曾经起作用,然后突然停止工作,所以我做了这个更改,现在它起作用了。有什么想法吗?

找到了解决办法!
$transitions.onStart({from:'*',to'*'})
语法意味着它只在一个级别上观察状态的变化,因此如果您想更进一步,可以使用
**
全局模式

此外,
$transitions.onStart(cb)
语法监视所有状态更改