路由不在Angular.js中工作

时间:2013-03-09 21:15:39

标签: javascript angularjs url-routing

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

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');
          } else {
          //error
          return "Invalid Token please try again";
        }
      }
    }
  };
}

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

关于plunker的代码清单:Angular JS routing

1 个答案:

答案 0 :(得分:1)

正确答案是将$ scope。$ apply()作为Mark建议 在评论中如此:

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";
    }
  }
}
};
}

corrected code