使用 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);
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);