使用 UI-router 导航到 fromState

Use UI-router to navigate to fromState

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

.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);

但这不起作用。状态必须是状态名称 + 参数,但 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);

});

那你可以取州名:

let from = transition.from().name;

首先中止当前转换:

transition.abort();

然后重定向:

$state.go(from);