天天看點

AngularJs form.FormController、ngModel.NgModelController

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操作相似。

繼續閱讀