2016-05-11 9 views
0

コントローラが大きすぎますので、いくつかの機能に分割することにしました。したがって、関数は入力値を認識しません。この問題を解決する方法を教えてください。角度:js関数の入力値を取得

angular.module("sampleApp", []) 
    .controller("defaultCtrl", function ($scope) { 

     $scope.addNewUser = function (userDetails, isvalid) { 
      doLogin(); 
     } 

    }); 

var doLogin = function(userDetails, isvalid) { 
      if (isvalid) { 
       $scope.message = userDetails.name + " " + userDetails.email; 
      } 
      else { 
       $scope.message = "Error"; 
       $scope.showError = true; 
      } 
} 

http://plnkr.co/edit/Rv6dqTECeD62HA1SgDM9?p=preview

答えて

0

そのため、$scopedoLogin関数の内部で利用できない、コントローラの外にあなたの関数を書かれています。これとは別に、値userDetailsisvaliddoLoginコールに渡しませんでした。

これであなたのコードを置き換えます

angular.module("sampleApp", []) 
    .controller("defaultCtrl", function ($scope) { 
     $scope.addNewUser = function (userDetails, isvalid) { 
      doLogin(userDetails, isvalid); 
     } 
     var doLogin = function(userDetails, isvalid) { 
      if (isvalid) { 
       $scope.message = userDetails.name + " " + userDetails.email; 
      } 
      else { 
       $scope.message = "Error"; 
       $scope.showError = true; 
      } 
    } 
}); 
3

関数を呼び出すが、あなたはパラメータ

$scope.addNewUser = function (userDetails, isvalid) { 
    doLogin(userDetails, isvalid,$scope); 
} 

var doLogin = function(userDetails, isvalid, $scope) { 
    //... 
} 

http://plnkr.co/edit/G66gFmJVhiXljyxgLDLP?p=preview

編集渡す必要があります:ユーザー名の長さの更新doLogin機能を得るために:

var doLogin = function(userDetails, isvalid, $scope) { 
       if (userDetails) 
        console.log(userDetails.name.length) 
       //.. 
    }  
+0

もう1つ質問:userDetails.nameの長さはどのように取得できますか? – kipris

+0

これは編集 –

+0

を参照してください。get error:未定義のプロパティ 'length'を読み取ることができません – kipris

2

コントローラをいくつかの機能に分解しました。しかし

var doLogin = function(userDetails, isvalid) { 
      if (isvalid) { 
       $scope.message = userDetails.name + " " + userDetails.email; 
      } 
      else { 
       $scope.message = "Error"; 
       $scope.showError = true; 
      } 
} 

あなたは小さなコントローラを持つようにしたいのであれば、あなたはいくつかのコントローラを持っていると角ファクトリーを使用して通信することができ、コントローラ

"defaultCtrl"

の$の範囲外です。

正直です。私はあなたのログインフォームに関連するすべてのものを "制御"するために同じコントローラを使うべきだと思います。

+0

もう1つの質問:userDetails.nameの長さを取得するにはどうすればいいですか? ? – kipris

+0

'userDetails.name.lenght' – tufac2

関連する問題