我希望能够捕捉到以前的状态,但是,我似乎无法理解为什么$transitions.onStart函数不能正确地触发:
// angular run block
$transitions.onStart({ from: '*', to: '*' }, (trans) => {
$rootScope.$previousState = trans.$from().name;
console.log('HERE?', $rootScope.$previousState)
});console.log永远不会触发,而且每当我在$rootScope中引用controllers时,我都看不到在这个.run块中定义的$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;
});而且这个很管用。奇怪的是,以前的语法曾经起作用,然后突然停止工作,所以我做了这个修改,现在起作用了。有什么想法吗?
发布于 2017-04-18 18:10:33
找到解决办法了!$transitions.onStart({ from: '*', to, '*' })语法意味着它只在一个级别上观察sate的变化,因此如果您想更进一步,可以使用** glob模式。
此外,$transitions.onStart(cb)语法监视所有状态变化。
https://stackoverflow.com/questions/43461332
复制相似问题