1

入力から提供されたデータがアプリで定義された指定された文字列 ( ) と等しい場合にloginErrorCtrl、ビュー ( ) にリダイレクトすることになっている angular.js コントローラー ( ) があります。/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() を次のように配置することでした。

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 に答える