2012-10-05 140 views
7

我正在評估AngularJS,至今我對此非常感興趣。但是,有一些失蹤前端驗證:可用的選項,如built-in mechanismsAngularUI initiative,通過指令執行校驗和,因此,每個驗證應該在視圖中宣稱:AngularJS驗證策略

<form ng-controller="SomeController"> 
    <!-- Notice the 'required' attribute directive below: --> 
    <input type="text" ng-model="user.name" name="uName" required /> 
</form> 

在這個例子中,該視圖定義了user.name是必需的。這就像說視圖定義了模型的正確形狀。是不是有點倒退?視圖不應該反映狀態,包括錯誤狀態嗎?

我誤解了嗎?我想知道是否可以在控制器中應用任何驗證器,將模型的數據表示爲有效/無效,並相應地更新視圖(用紅色繪製窗體控件,顯示錯誤消息,清除以前的錯誤等)。我假設AngularJS對此足夠強大,但在目前爲止的文檔和示例中,我只是沒有看到像上面描述的任何內容。謝謝!

+0

'required'是一個HTML5屬性。 http://html5doctor.com/html5-forms-introduction-and-new-attributes/您還可以將'input'' type'屬性設置爲'email,tel,date,url,number'等東西,然後他們會驗證因此。 –

+0

另外我從來沒有使用過AngularUI Validate,我剛剛使用了直接了當的HTML5的AngularJS驗證,它的工作非常好。 AngularUI Validate用於將自定義表達式驗證添加到字段。 –

回答

1

我想它的一切有關透視。我看到的方式是,您正在定義一個包含表單的視圖,並且該表單包含文本類型的輸入。正是您根據需要標記的是此文本輸入。如果你注意到,角度不關心,如果文本是user.name或user.age或其他任何。它只是將文本輸入與必需的相關聯。所以它只是驗證文本輸入和與該模型關聯的模型是最終結果(如果驗證通過,則值進入的地方!)。

看一看

http://docs.angularjs.org/guide/forms

自定義表單驗證,如果你想在做的是不是默認的驗證。因爲你已經知道提前產生的視圖(讓我們在編譯時調用它!),你可以關聯視圖中的所有驗證器,因此不必在控制器中執行它(這可能是爲了運行時間驗證!)。