2016-03-03 37 views
1

我有部分代碼如下圖所示:AngularJS初學者需要的代碼解釋

angular.module('tessicommunicationApp') 
    .controller('RegisterController', function ($scope, $translate, $timeout, Auth) { 
     $scope.success = null; 
     $scope.error = null; 
     $scope.doNotMatch = null; 
     $scope.errorUserExists = null; 
     $scope.registerAccount = {}; 
     $timeout(function(){angular.element('[ng-model="registerAccount.login"]').focus();}); 

我的問題很簡單:我不設法找到其中聲明的登錄屬性。因爲模板,我可以讀:

<input type="text" class="form-control" id="login" name="login" placeholder="{{'global.form.username.placeholder' | translate}}" 
          ng-model="registerAccount.login" ng-minlength=1 ng-maxlength=50 ng-pattern="/^[a-z0-9]*$/" required> 

的NG-模型指令綁定登錄屬性,我不知道它在哪裏聲明。

下面的路線的一部分,如果你想:

angular.module('tessicommunicationApp') 
    .config(function ($stateProvider) { 
     $stateProvider 
      .state('register', { 
       parent: 'account', 
       url: '/register', 
       data: { 
        authorities: [], 
        pageTitle: 'register.title' 
       }, 
       views: { 
        '[email protected]': { 
         templateUrl: 'scripts/app/account/register/register.html', 
         controller: 'RegisterController' 
        } 
       }, 

謝謝您的解答。

回答

0

login屬性不必顯式聲明,只是在輸入字段中鍵入內容時才添加到$scope.registerAccount

所以基本上你有

// before user input 
$scope.registerAccount = {} 

// after user input "test" 
$scope.registerAccount = { 
    login: 'test' 
} 
0

您應該在您的html中添加{{ registerAccount }}。你可能會理解它的工作方式。

這裏重要的一點是2路數據綁定以2種方式工作,javascript到html和html到javascript。 這意味着當你在你的HTML輸入中輸入一個值時,你的javascript $範圍將被更新爲登錄值。

2路數據綁定是angularjs的關鍵特性之一,並且必須瞭解您是否希望使用該框架獲得更好的性能。

1

AngularJS控制器使用與$scope聲明雙向數據視圖(HTML)和控制器(JS)之間的結合。因此,您的控制器$scope.registerAccount中的空對象可以與視圖進行通信。

因此,如果您在input字段中鍵入內容,Angular會告訴控制器使用綁定到輸入的任何文本的關鍵字registerAccount更新registerAccount對象。

E.g.如果我在輸入中鍵入「Hello World」,則控制器將被更新。看看這個快速小提琴:

https://jsfiddle.net/fw920Led/1/

我的概率利用這段時間通過樣品的Todo應用程序,AngularJS提供運行真正認識到這是怎麼回事。祝你好運!

0

好的,如果我理解的很好,沒有必要在左側明確聲明變量'login'。它是從HTML(視圖)到Javascript(模型)的綁定,導致在範圍級別上存在登錄變量連接到registerAccount objet。