Javascript $location.path()工作不正常

Javascript $location.path()工作不正常,javascript,angularjs,Javascript,Angularjs,此代码在用户未授权时更改路径,但视图仅在页面重新加载后更新。 $state.reload()和$rootScope.apply()没有帮助 $rootScope.$on('$stateChangeStart', function (event, next) { if (!$localStorage.authenticate) { $rootScope.authenticate = false; if (next.url == '/reset_password/:t

此代码在用户未授权时更改路径,但视图仅在页面重新加载后更新。 $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;
          }
        })
      }
    });

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

要更改状态,您必须使用以下命令:

 $state.go("mystatename", {urlParam:value});
在HTML中,不要使用href,而是使用ui sref:

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

希望它能解决您的问题。

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

要更改状态,您必须使用以下命令:

 $state.go("mystatename", {urlParam:value});
在HTML中,不要使用href,而是使用ui sref:

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

希望它能解决您的问题。

$state?这意味着你正在使用ui路由器?是的,我正在使用ui路由器。你可以添加你的app.js,其中有$routeProvider?$state吗?这意味着您正在使用ui路由器?是的,我正在使用ui路由器您可以添加您的app.js,其中包含$routeProvider吗?错误:RangeError:最大调用堆栈大小超出哪行?你能提供吗?@user2304181我找到了。当您使用$state.go()重定向它时,将触发$stateChangeStart。。。这个事件将重定向。。。一次又一次。如果“next”=“yourloginstate”,则需要添加一个。然后它应该是好的。有什么问题,console.log(next.url);如果(next.url!='/login'){$state.go(“login”);}在控制台中:/main/login但视图仍未登录解决:我正在使用$locationChangeSuccess事件错误:RangeError:最大调用堆栈大小超出哪行?你能提供吗?@user2304181我找到了。当您使用$state.go()重定向它时,将触发$stateChangeStart。。。这个事件将重定向。。。一次又一次。如果“next”=“yourloginstate”,则需要添加一个。然后它应该是好的。有什么问题,console.log(next.url);如果(next.url!='/login'){$state.go(“login”);}在控制台中:/main/login但视图仍未解决登录问题:我正在使用$locationChangeSuccess事件