AngularJS ui-router 登录后重定向

3
我有一个使用AngularJS和ui-router的项目。除了第一次从登录界面重定向到预览状态之外,一切都正常。
默认状态是主页 - http://test/#/ 例如,如果用户没有登录 - http://test/#/test/1000/details 就会跳转到登录页面(这是它应该做的)
然后在用户登录后,系统会进入默认状态“主页 - http://test/#/”,但我想进入http://test/#/requests/1000/details
我如何保存“http://test/#/requests/1000/details或stateName”以便在登录后重定向?
我尝试使用$stateChangeSuccess来保存状态日志在$rootscope中,但第一个(http://test/#/requests/1000/details)从未被保存。
有什么想法如何处理?
谢谢。

只是另一个可以查看的答案 https://dev59.com/vYbca4cB1Zd3GeqPWXs6#28886677 - acdclive
1个回答

7
您可以在主应用程序的运行方法中向$state添加“previous”属性。
以下是我的解决方法:
// add ui-router variables to $rootScope. Comes handy in many cases, for example setting page title
angular.module('app').run(['$rootScope', '$state', '$stateParams', addUIRouterVars]);

function addUIRouterVars($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;

    // add previous state property
    $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState) {
        $state.previous = fromState;
    });
}

我添加了这个但是它保存的是{url="^", abstract=true, name="", views=null, transition=null},它没有保存正确的数据,应该是{url="http://test/#/request/1000/details, etc...},对吗? - Valter
对我来说它有效。例如,它可能看起来像这样:Object {url: "/posts", templateUrl: "../AngularApp/post/posts.html", data: Object, resolve: Object, controller: "postsCtrl as vm"…}我认为你的值是默认值,如果之前没有状态(即您使用该状态启动应用程序),则会出现这些值。 - Joe Samanek
如果您想了解更多信息,请查看此线程: https://github.com/angular-ui/ui-router/issues/92 - Joe Samanek
嗨,乔,经过仔细查看...发现每次登录后都会重定向到主页的代码。现在已经解决了。谢谢。 - Valter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接