$ location.path()无法正常工作

时间:2015-08-07 10:01:54

标签: javascript angularjs

当用户未经授权时,此代码更改路径,但仅在页面重新加载后查看更新。 $ state.reload()和$ rootScope.apply()没有帮助。

$rootScope.$on('$stateChangeStart', function (event, next) {
  if (!$localStorage.authenticate) {
        $rootScope.authenticate = false;

     if (next.url == '/reset_password/:token') {
          console.log('reset password page');
        }
        else if (next.url == '/forgot_password') {
          $location.path(next.url);

        }
        else {
          $location.path('/login');
        }
      }
      else {
        $rootScope.authenticate = true;
        if ((next.url == '/login') || (next.url == '/forgot') || (next.url == '/reset_password/:token')) {
          $location.path('/index');


        }
        $rootScope.userName = $localStorage.userName;
        API.getService('/login').get(function (res) {
          if (!res.logged) {
            $location.path('/login');
            delete $localStorage.userName;
            $localStorage.authenticate = false;
          }
        })
      }
    });

1 个答案:

答案 0 :(得分:0)

在ui路由器中,您不应使用$location

要改变状态,你必须使用它:

 $state.go("mystatename", {urlParam:value});

在HTML中不使用href,请改用ui-sref:

 ui-sref = "mystatename({urlParam:value})"

希望它能解决你的问题。