Javascript Angular.js中的路由不工作

Javascript Angular.js中的路由不工作,javascript,angularjs,url-routing,Javascript,Angularjs,Url Routing,我有一个angular.js控制器(loginErrorCtrl),当输入提供的数据等于应用程序中定义的指定字符串(data.serverToken)时,该控制器应该重定向到视图(/菜单) 问题是,当我在输入框中键入正确的标记时,$location.path('/menu')在我点击退格键之前不会重定向。如何在成功验证令牌后使其重定向 plunker上的代码列表:正确的答案是按照马克的建议放置$scope.$apply() 在这样的评论中: function loginErrorCtrl($sc

我有一个angular.js控制器(
loginErrorCtrl
),当输入提供的数据等于应用程序中定义的指定字符串(
data.serverToken
)时,该控制器应该重定向到视图(
/菜单

问题是,当我在输入框中键入正确的标记时,
$location.path('/menu')
在我点击退格键之前不会重定向。如何在成功验证令牌后使其重定向


plunker上的代码列表:

正确的答案是按照马克的建议放置$scope.$apply() 在这样的评论中:

function loginErrorCtrl($scope, Data, $location) {
$scope.data = Data;
$scope.validateToken = function(token) {  
if (token != null) {
  if (token.length == 4) {
    if (token == Data.serverToken) {
      $location.path('/menu');
      $scope.$apply()
      } else {
      //error
      return "Invalid Token please try again";
    }
  }
}
};
}

正确的答案是按照马克的建议使用$scope.$apply() 在这样的评论中:

function loginErrorCtrl($scope, Data, $location) {
$scope.data = Data;
$scope.validateToken = function(token) {  
if (token != null) {
  if (token.length == 4) {
    if (token == Data.serverToken) {
      $location.path('/menu');
      $scope.$apply()
      } else {
      //error
      return "Invalid Token please try again";
    }
  }
}
};
}

设置路径后,尝试添加
$scope.$apply()
。我没有下载您的代码,但听起来您可能在Angular之外调用validateToken()。按键将触发摘要循环。@MarkRajcok它仍然不起作用。我得到一个错误,上面写着:
TypeError:Object#在Object上没有“apply”方法。$scope.validateToken
True,scope没有
apply
方法,但它确实有
$apply
方法——您可能错过了
$
@MarkRajcok谢谢您的帮助。我确实漏掉了
$
,但这里是奇怪的部分。在chrome中,我得到错误:
error:$digest已在进行中,出现错误(.如果可以,请下载代码片段,它只有36kb..谢谢!不要在下载中放置代码…将永远不会被查看。请将其本身放入问题中,或将演示放在一起,或尝试添加
$scope.$apply()
设置路径后。我没有下载您的代码,但听起来您可能正在调用validateToken()在Angular之外。按键将触发摘要循环。@MarkRajcok它仍然不起作用。我收到一个错误,上面写着:
TypeError:Object#在Object上没有“应用”方法。$scope.validateToken
True,scope没有
apply
方法,但它有
$apply
方法——您可能错过了
$
@MarkRajcok谢谢你的帮助。我确实省略了
$
,但这里是奇怪的部分。在chrome中,我得到错误:
error:$digest已在进行中(.如果可以的话,请下载该代码段,它只有36kb..谢谢!不要在下载中放置代码…将永远不会被看到。请将其本身放入问题中,或将演示放在或中