AngularJS UI路由器具有一个有用的参数“ 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 /页面名称”
然后我想做这样的事情:
$state.go($rootScope.loggedFromState);
但这不起作用。状态必须是状态名称+参数,但是fromState是URL格式。如何导航到$ rootScope.loggedFromState(“ http://my-app-url/page-name”)?
答案 0 :(得分:1)
更合适的方法是使用ui-router钩子: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);