2015-10-05 48 views
0

我是角度新人,想學習它。很少有關於Angular js的表單驗證的問題

https://scotch.io/tutorials/angularjs-form-validation 
https://scotch.io/tutorials/angularjs-form-validation-with-ngmessages 

我正在讀通過角JS表單驗證文章,我在其中我想在這裏討論幾個區域絆倒。

1)$pristine and $dirty有什麼區別。兩者看起來一樣。 2)需要了解$touched?它能做什麼 ?

3)請參閱下面的代碼

<div class="form-group"> 
      <label>Name</label> 
      <input type="text" name="name" class="form-control" ng-model="name" required> 
     </div> 

     <!-- USERNAME --> 
     <div class="form-group"> 
      <label>Username</label> 
      <input type="text" name="username" class="form-control" ng-model="user.username" ng-minlength="3" ng-maxlength="8"> 
     </div> 

的第一個ng-model="name"和第二個ng-model="user.username" 爲什麼有些時候宣佈了ng-model唯一屬性名稱,爲什麼有些時候我們不得不寫username dot property name

4)<input type="email" name="email" class="form-control" ng-model="email"> type="email"是具體什麼angular or html5?

5)<p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</p>

他們檢查$無效,$質樸。他們可以在這裏使用$ invalid和$ dirty而不是$ pristine嗎?

6)看到代碼

angular 
    .module('app', ['ngMessages']) 
    .controller('MainCtrl', MainCtrl); 

function MainCtrl() { 

} 

他們在注入其他指令到應用程序模塊....這是注入

.module('app', ['ngMessages']) 

請參閱我的觀點,引導我回答的方式爲我的每一點,如果可能的話。你的回答會幫助我理解和學習角度js.thanks

回答

0
  1. $ pristine是$ dirty的倒數。

  2. 文檔說:甲模型被認爲是被觸摸用戶何時第一聚焦控制元件,然後將焦點轉移來自控制(模糊事件)的距離。

  3. 因爲有些時候你想將控件綁定到作用域中的一個變量,有時候你想把它綁定到作用域中的一個對象的域。後者是推薦的。特別是前者在使用自己的作用域的指令(如ng-if或ng-repeat)內引起問題,因爲它將在子指令作用域而不是控制器作用域中設置該字段。根據經驗,始終使用後者,並始終初始化控制器中的對象(即用戶)。

  4. 它都是。它是在HTML5規範中指定的,角度驗證輸入的字符串確實是一個有效的電子郵件地址。

  5. 是,因爲$髒的$這並不注入任何逆質樸

  6. 'ngMessages'模塊的名稱。這個聲明說模塊的'app'取決於模塊'ngMessages'。因此,在ngMessages模塊中定義的所有指令,服務,控制器和過濾器都將在應用程序模塊中可用。

+0

在點4,如果我們去掉'TYPE =「電子郵件「那麼會發生什麼?角度無法驗證電子郵件? – Mou

+0

@Mou不,角將不驗證電子郵件。如果輸入信息不是電子郵件,它怎麼能知道這個值應該是一封電子郵件?爲什麼不測試它,並閱讀文檔? –

+0

感謝您的意見。 – Mou

1

1)$原始是用於指示該字段沒有被修改,而$髒爲告訴它已被修改。

$ pristine:如果用戶還沒有與表單交互,它將爲TRUE。

$ dirty:如果用戶已經與表單交互過,它將爲TRUE。

2)$ touch告訴您用戶是否僅僅在那裏/訪問過。

$ touch:如果控件失去焦點,則爲真。

3)因爲NG-模型= 「名稱」名稱屬性被直接綁定到$範圍,以及用於NG-模型= 「user.username」用戶勢必$範圍用戶有一個屬性用戶名爲。 認爲它是: - 用戶對象用戶名是其財產。

4)不知道,但我覺得沒有什麼特定的。

5)

6)這裏您注射ngMessages您的角模塊

+0

與形式交互或不......這是什麼意思。假設如果我把重點放在一個形式的文本形式,那麼應該考慮...互動? – Mou

+0

第3點解釋不清楚。假設我有模型說員工,那麼當我們綁定一些時間將寫ng-model =「name」和一些時間ng-model =「user.salary」,這只是不清楚。你可以拿出相關的示例代碼來更加清楚。謝謝 – Mou