繁体   English   中英

路线更改,但视图不包含ui-router

[英]Route changes but view doesn't ui-router

我试图重定向未经授权的人,当他们第一次通过URL进入我的网站时;

eg: example.com/#/order应该重定向到example.com/#/auth ,这包括他们何时首次访问网页以及在各个状态之间进行导航。

目前,我有一个抽象的父状态/order/auth ,这些状态可以解决检查身份验证和重定向的问题。 我还监视$stateChangeStart事件来执行相同的操作。

最初加载页面时的代码可以正常工作,如果您访问/order/restaurant而没有登录,它将重定向,但是,如果我使用的是url /auth/login ,则可以将我的url更改为/order/resturant ,它将成功重定向我,但视图将不会更新。 我仍然可以看到/order/resturant页面,但是解决方法和页面更改都被点击了。 为什么会这样? 我也尝试使用$rootScope.$apply()也不成功。

对于父州,我的代码如下:

// Authentication Urls
.state('auth', {
  url: '/auth',
  templateUrl: 'modules/auth/auth.html',
  abstract: true
})

// Order Urls
.state('order', {
  url: '/order',
  templateUrl: 'modules/order/order.html',
  abstract: true
})

和我的代码来观看stateChange

.run(['$rootScope', '$location', 'Auth', function($rootScope, $state, Auth) {
  $rootScope.$on('$stateChangeStart', function(event, toState) {
    var stateName = toState.name
    console.log('State start')

    if (!stateName.match(/auth/) && !Auth.isLoggedIn) {
      console.log('User is not visiting auth and isn\'t logged in, redirecting....')
      $state.go('auth.login')

    } else if (Auth.isLoggedIn && stateName.match(/auth/)) {
      console.log('User is logged in and is on the auth page, redirecting....')
      $state.go('order.resturant')
    }
  })
}])

在此处查看文档( http://github.com/angular-ui/ui-router/wiki#state-change-events )之前,应在执行新过渡之前通过调用event.preventDefault()取消导航。

暂无
暂无

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

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