1

我有一个 angular.js 控制器 ( ),当输入提供的数据等于应用程序 () 中定义的指定字符串时loginErrorCtrl,它应该重定向到视图 ( )。/menuData.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 路由

4

1 回答 1

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

更正的代码

于 2013-03-11T09:00:06.627 回答