AngularJs實(shí)現(xiàn)ng1.3+表單驗證
前一篇文章詳解AngularJS實(shí)現(xiàn)表單驗證說過,ng1.3+以后對于表單驗證有了優(yōu)化,它不再需要一個詳細(xì)的表達(dá)式狀態(tài)創(chuàng)建元素顯示或隱藏。
例如:我們在ng1.3之前的版本都需要如下寫法:
ng1.3之后新增了一個ngMessages指令,他被打包成一個模塊發(fā)布,因此我們使用的時候只需要將這個依賴模塊引入即可
怎么用?
現(xiàn)在我們學(xué)習(xí)一下,它的用法,Code如下:
<!DOCTYPE html> <html ng-app="myTest"> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <link href="~/Content/css/bootstrap.min.css" rel="stylesheet" /> <script src="~/Javascript/angular.js"></script> <script src="~/Javascript/angular-messages.js"></script> <style type="text/css"> body { padding-top: 30px; } </style> </head> <body> <div class="col-md-6"> <form role="form" name="myForm" class="form-horizontal" novalidate> <div class="form-group"> <div class="col-md-2"> 用戶名 </div> <div class="col-md-10"> <input type="text" placeholder="ng-Messages測試" name="name" ng-model="username.name" ng-minlength=3 ng-maxlength=20 required /> <hr/> $error:{{myForm.name.$error}} <hr/> <div ng-messages="myForm.name.$error"> <div ng-message="required">必填項</div> <div ng-message="minlength">字符太短小于3</div> <div ng-message="maxlength">字符太長大于20</div> </div> </div> </div> </form> </div> </body> </html> <script type="text/javascript"> angular.module("myTest", ['ngMessages']); </script>
效果如下:
可以看出,其實(shí)ng是通過$error來監(jiān)視模型的變化,因為$error中包含了錯誤的詳細(xì)信息,同時,如果我們的應(yīng)用場景中如果同時,有好幾處錯誤,那么,上面代碼按照ng-message的順序只會顯示一條錯誤信息,如果我們需要全部顯示出來只需要添加 ng-messages-multiple
<input type="text" placeholder="測試" name="name" ng-model="username.name" ng-minlength=3 ng-maxlength=20 required /> <div ng-messages="myForm.name.$error" ng-messages-multiple> <div ng-message="required">必填項</div> <div ng-message="email">郵件格式不對</div> <div ng-message="minlength">字符太短小于3</div> <div ng-message="maxlength">字符太長大于20</div> </div>
效果如下:
怎么復(fù)用?
我們的驗證信息在一個項目中大多是通用性很高的(對于樣式,描述等都有高度的統(tǒng)一性),因此我們這里也會考慮到復(fù)用,ng中同樣提供了解決方案
就是將其作為模板,指定請求路徑由ng自動添加。這里再介紹一個指令 ng-messages-include
我們將上面的驗證信息保存到一個獨(dú)立的html靜態(tài)頁面中,然后使用ng-messages-include指定請求路徑即可。
Code:
<div ng-messages="myForm.name.$error" ng-messages-multiple ng-messages-include ="@Url.Content("~/Content/template/error.html")"> </div>
error.html
<div ng-message="required">必填項</div> <div ng-message="email">郵件格式不對</div> <div ng-message="minlength">字符太短小于3</div> <div ng-message="maxlength">字符太長大于20</div>
效果如下:
當(dāng)然,模板可能在特殊的時期某些字段錯誤提示不能滿足你的要求,你可以添加自定義的提示如下:
<div class="error" ng-messages="signup_form.name.$error" ng-messages-include="templates/errors.html"> <!-- 按ng-message的順序依次覆蓋 --> </div>
自定義驗證(指令)涉及到的細(xì)節(jié)知識點(diǎn)很多,如果簡單地為了用而用,可能寫得出功能,但是代碼丑陋,太菜了,還需要花個把月方能弄懂點(diǎn)皮毛,這部分暫告一段落,等徹底明白了,在大家分享,大家亦可以結(jié)合《理解AngularJs指令》進(jìn)行學(xué)習(xí)。
- AngularJS實(shí)現(xiàn)表單驗證
- AngularJS使用ngMessages進(jìn)行表單驗證
- 詳解AngularJS實(shí)現(xiàn)表單驗證
- AngularJS中實(shí)現(xiàn)用戶訪問的身份認(rèn)證和表單驗證功能
- AngularJS使用angular-formly進(jìn)行表單驗證
- 詳細(xì)解讀AngularJS中的表單驗證編程
- AngularJS手動表單驗證
- AngularJS自動表單驗證
- 詳解AngularJS中的表單驗證(推薦)
- 基于angularJS的表單驗證指令介紹
- AngularJS實(shí)現(xiàn)表單驗證功能
- AngularJS學(xué)習(xí)筆記之表單驗證功能實(shí)例詳解
相關(guān)文章
angular+bootstrap的雙向數(shù)據(jù)綁定實(shí)例
本篇文章主要介紹angular+bootstrap的雙向數(shù)據(jù)綁定的實(shí)例,具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03Angular2學(xué)習(xí)教程之組件中的DOM操作詳解
這篇文章主要給大家介紹了Angular2學(xué)習(xí)教程之組件中DOM操作的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來看看吧。2017-05-05angular json對象push到數(shù)組中的方法
下面小編就為大家分享一篇angular json對象push到數(shù)組中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02AngularJs實(shí)現(xiàn)ng1.3+表單驗證
這篇文章主要介紹了AngularJs實(shí)現(xiàn)ng1.3+表單驗證,感興趣的小伙伴們可以參考一下2015-12-12Angular 2應(yīng)用的8個主要構(gòu)造塊有哪些
這篇文章主要為大家詳細(xì)介紹了Angular 2應(yīng)用的8個主要構(gòu)造塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10使用Angular CDK實(shí)現(xiàn)一個Service彈出Toast組件功能
本文主要寫用cdk實(shí)現(xiàn)一個簡單的Toast組件,使用的是cdk中的overlay模塊,需要手動安裝環(huán)境,具體安裝方法及相關(guān)實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-07-07Angular 4.x中表單Reactive Forms詳解
這篇文章主要介紹了Angular 4.x中表單Reactive Forms的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04AngularJS 中的Promise --- $q服務(wù)詳解
這篇文章主要介紹了AngularJS 中的Promise --- $q服務(wù)詳解方法的相關(guān)資料,需要的朋友可以參考下2016-09-09