繁体   English   中英

使用 UI-router 导航到 fromState

[英]Use UI-router to navigate to fromState

AngularJS UI-router 有一个有用的参数“fromState”,它允许我存储用户在更改 state 时来自哪里。 我正在尝试实现一个系统,如果用户被带到订阅/登录/注册 state,则该系统会将用户带回他们离开的地方。 我捕获 fromState,他们执行操作,然后如果我的 fromState 变量被设置,用户将被带回 state。 但它不起作用:示例:

.run(function ($rootScope, $state, $timeout, $location, $anchorScroll) {
  $rootScope.$on('$locationChangeSuccess', function (event, toState, fromState) {
    $rootScope.loggedFromState = fromState;
    console.log($rootScope.loggedFromState);

输出“http:// my-app-url /page-name”

然后我想做这样的事情:

$state.go($rootScope.loggedFromState);

但这不起作用。 state 必须是 state 名称 + 参数,但 fromState 是 URL 格式。 如何导航到 $rootScope.loggedFromState (" http://my-app-url/page-name ")?

更合适的方法是使用 ui-router hooks: https://ui-router.github.io/guide/transitionhooks

$transitions.onStart({}, function(transition) {
    console.log(
    "Transition from " + transition.from().name +
    " to " + transition.to().name
    );

    let from = transition.from().name;
    // validation
    // if validation fails abort transition
    transition.abort();
    // and redirect somewhere else
    $state.go(from);

});

然后可以取 state 名称:

let from = transition.from().name;

首先中止当前转换:

transition.abort();

然后重定向:

$state.go(from);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM