2016-05-11 40 views
0

我的控制器太大,因此決定將它分成幾個函數。所以現在函數看不到輸入值。你能告訴我如何解決這個問題嗎?Angular:在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

你寫的控制器之外的功能,因此,$scope內不可doLogin功能。除此之外,您沒有將值userDetailsisvalid的值傳遞給doLogin調用。

這種替換代碼:

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

還有一個問題:我如何獲得userDetails.name的長度? – kipris

+0

爲此,請參閱編輯 –

+0

獲取錯誤:無法讀取未定義的屬性「長度」 – kipris

2

您已將控制器分解爲若干功能。然而

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

超出控制器

"defaultCtrl"

所以,如果你想有較小的控制器可以有多個控制器和使用的角度廠傳達他們的$範圍。

說實話。我想你應該使用相同的控制器來「控制」與登錄表單相關的所有內容。

+0

還有一個問題:如何獲取userDetails.name長度? – kipris

+0

'userDetails.name.lenght' – tufac2