form.FormController
FormController跟蹤所有他所控制的和嵌套表單以及他們的狀态,就像有效/無效或者髒值/原始。
每個表單指令建立一個FormController執行個體。
方法:
$addControl();
給表單注冊一個控制器。
使用了ngModelController的輸入元素會在連接配接時自動執行。
$removeControl();
給表單登出一個控制器。
使用了ngModelController的輸入元素會在登出時自動執行。
$setValidity();
給表單設定表單控制器的有效性。
此方法也将傳播到父表單。
$setDirty();
給表單設定一個髒狀态。
這個方法将被調用去添加類“ng-dirty”,給表單設定一個髒狀态。這個方法将傳到父表單。
$setPristine();
将表單設定為原始狀态。
這種方法被調用去删除類“ng-dirty”,給表單設定初始狀态。這個方法将傳到父表單。
屬性:
$pristine
如果使用者和表單尚未進行互動,則為true。
$dirty
如果使用者和表單已進行互動,則為true。
$valid
所有的表格和控制器都是驗證有效,則為true。
$invalid
如果至少有一個控件或表單驗證無效,則為true。
$error
是一個hash對象,包含引用無效的控制器或表單。
ngModel.NgModelController
ngModel.NgModelController為ng-model指令提供了API。該控制器包含資料綁定,驗證,CSS更新服務,和值的格式化和解析。它很明确的不包含任何邏輯處理,DOM渲染或者監聽事件。這種的DOM相關的邏輯應該由其他使用NgModelController進行資料綁定指令提供。
$render();
當視圖需要更新時調用。
$isEmpty(value);
當我們需要判斷input的值是否為空時可執行。例如, input的值是否存在,則需要的指令執行此函數。預設的$isEmpty函數檢查值是否是“undefined”、“”、null或者NaN。
Value:檢查的引用。
$setValidity(validationErrorKey,isValid);
改變有效性的狀态,并通知表單當控制器的有效性發生變化。(如果驗證器已經被标記為無效,則不通知表單。)
在需要驗證的時候這種方法被調用---即分析器或格式化功能。
validationErrorKey:驗證器的名稱。validationErrorKey将會被配置設定給$error[validationErrorKey ] =isValid,這樣就可以進行資料綁定了。
isValid:目前狀态是否是valid(true)或者invalid(false)。
設定控制器初始化狀态。
$setViewValue(value);
更新頁面的值。
當頁面上的值發生變化時,這個方法被調用。
value:頁面上的值。
屬性:
$viewValue
頁面上實際的字元串值。
$modelValue
模型中控制器綁定的的該值。
$parsers
被執行的功能數組,作為一個控制器從DOM讀取值的管道。每一個函數被調用去傳遞值到下一個,最後傳回值用于填充模型。用于淨化/轉換或者驗證值。為了驗證,解析器應該使用$setvalidity()更新有效狀态,并傳回未定義的無效值。
$formatters
被執行功能的數組,作為一個控制器從DOM讀取值的管道。每一個函數被調用去傳遞值到下一個,最後傳回值用于填充模型。用于的格式化/轉換在控制器和驗證中顯示的值。
$viewChangeListeners
當頁面上值變化時所執行的函數的數組。它沒有參數被執行,它的傳回值被忽略。這可以用來代替對模型值額外的監聽。
帶有所有錯誤的hash對象。
使用者還沒有與控制器互動,則為true。
使用者已經與控制器互動,則為true。
如果沒錯誤,則為true。
控制器上至少有一個錯誤,則為true。
使用代碼:
上面對于FormController的那些屬性,可以作為angular表單驗證的判斷。對于下面的NgModelController,用的不多,不過幾個方法和屬性在指令中還是挺友善使用的,感覺這種操作也和jquery操作相似。