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)
语法监视所有状态更改