javascript - ui-router 改变之前的状态

标签 javascript angularjs angular-ui-router

该应用程序有页面,X , YZ 。所以路由应该如下我进入页面X然后选择一些详细信息,然后转到页面Y然后选择更多详细信息,然后转到Z 。所以我想在访问 Z 后得到它一旦我单击窗口后退按钮,它应该转到页面 X而不是页面 Y 。从 Y 出发时至Z ,我还尝试添加 { location: 'replace' }$state.go但它不起作用。关于如何实现这一目标有什么想法吗?

谢谢

最佳答案

每次更改状态时,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');
        }
    });
});

浏览器后退按钮本质上会触发相同的事件,因此您的问题将由此解决。

关于javascript - ui-router 改变之前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395326/

相关文章:

javascript - 正则表达式中 $1 和 $& 的区别

javascript - 为什么我不能使用全局变量中的对象函数?

javascript - Angular.bootstrap 抛出错误

javascript - ui-grid 中单元格点击的回调

javascript - Angular-ui-路由器 : Got error when assign number to resolve's property

angularjs - Angular UI-Router,访问父状态并将用户动态重定向到某个子状态

angularjs - 更改 URL 会破坏路由阻止

c# - 在 AngularJS $http 中传递日期到 ASP.NET Web Api

javascript - 是否可以实现 'Continue as {Facebook user name}' 按钮?

angularjs - Angular 跟踪by和orderBy