ui-router改变以前的状态

时间:2016-04-04 05:47:46

标签: javascript angularjs angular-ui-router

该应用包含XYZ个网页。因此,路由应如下所示,我进入页面X,然后选择一些详细信息,然后转到页面Y,然后选择更多详细信息,然后转到Z。所以我想在转到Z页面后点击窗口后退按钮后,它应该转到页面X而不是页面Y。从Y转到Z时,我也尝试在{ location: 'replace' }中添加$state.go,但它不起作用。关于如何实现这一点的任何想法?

谢谢

2 个答案:

答案 0 :(得分:2)

每次更改状态时,Angular都会触发一个名为$stateChangeStart的事件,您可以利用它来发挥作用。

app.run中,执行

app.run(function($rootScope,$state){
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
        //Check if you're going from Z to Y
        if(fromState.name === 'Z' && toState.name === 'Y'){ 
            // if so, first stop the default behavior
            event.preventDefault();
           // then navigate to X
            $state.go('X');
        }
    });
});

浏览器后退按钮实际上会触发相同的事件,因此您的问题将通过此解决。

答案 1 :(得分:0)

这样做 给你的州$ state.go像..:  $state.go('y')