ionic使用angularjs表單驗(yàn)證(模板驗(yàn)證)
1什么是模板驗(yàn)證
顧名思義模板驗(yàn)證就是通過(guò)一些angularjs的屬性來(lái)在html標(biāo)簽中驗(yàn)證,為了往模板驅(qū)動(dòng)表單中添加驗(yàn)證機(jī)制,你要添加一些驗(yàn)證屬性,就像原生的 HTML 表單驗(yàn)證器。 Angular 會(huì)用指令來(lái)匹配這些具有驗(yàn)證功能的指令。每當(dāng)表單控件中的值發(fā)生變化時(shí),Angular 就會(huì)進(jìn)行驗(yàn)證,并生成一個(gè)驗(yàn)證錯(cuò)誤的列表(對(duì)應(yīng)著 INVALID 狀態(tài))或者 null(對(duì)應(yīng)著 VALID 狀態(tài))。
2示例
這是我寫的一個(gè)小demo,這種驗(yàn)證方式無(wú)需寫js代碼全部在標(biāo)簽 里使用angularjs的屬性,其他地方也無(wú)需引入angular forms庫(kù),因?yàn)閕onic會(huì)自動(dòng)默認(rèn)引入。
<header [title]="title"></header> <ion-content scroll="false"> <!--<form>--> <ion-item> <ion-input type="text" class="form-control" name="username" #username="ngModel" required maxlength="10" minlength="6" placeholder="用戶名" [(ngModel)]="user.username" ></ion-input> </ion-item> <p>ahdasidhasidashdudi</p> <ion-item> <ion-input type="password" class="form-control" name="password" #password="ngModel" required maxlength="16" minlength="6" placeholder="密碼" [(ngModel)]="user.password"></ion-input> </ion-item> <ion-item> <ion-label>記住密碼</ion-label> <ion-toggle [(ngModel)]="pepperoni"></ion-toggle> </ion-item> <button ion-button block (click)="login()">登錄</button> <ion-item> <button ion-button icon-start outline (click)="goRegistered()"> 去注冊(cè) </button> <button ion-button icon-end outline> 忘記密碼 </button> </ion-item> <h1 class="errorMessage">{{promptMessage}}</h1> <span *ngIf="username.invalid && (username.dirty || username.touched)" class="errorMessage">用戶名必須為6到10位</span> <span *ngIf="password.invalid && (password.dirty || password.touched)" class="errorMessage"> 密碼必須為6-16位 </span> <!--</form>--> </ion-content>
運(yùn)行效果如下:
3核心屬性
可以看到[(ngModel)]="user.username"作用是綁定了我們?cè)趖s文件中定義的變量。
#username="ngModel"的作用是把我們綁定的模型值命名成username,變成了一個(gè)FormControl對(duì)象,這里不必糾結(jié)下節(jié)會(huì)講。
required 驗(yàn)證是否為空 maxlength="10" 最大長(zhǎng)度 minlength="6"最小長(zhǎng)度。這些都是我們需要驗(yàn)證的條件。
*ngIf="username.invalid && (username.dirty || username.touched)"
*ngIf標(biāo)簽等于true時(shí)將錯(cuò)誤信息顯示出來(lái)username.invalid表示驗(yàn)證不合法返回true,username.dirty 判斷是否改變了這個(gè)參數(shù)的值,username.touched表示是否有碰過(guò)表單,作用在于,剛打開(kāi)表單頁(yè)面是,里面參數(shù)都是空的,但無(wú)需顯示錯(cuò)誤信息。
進(jìn)入model.d.ts文件看到部分源碼如下
/** * A control is `valid` when its `status === VALID`. * * In order to have this status, the control must have passed all its * validation checks. */ readonly valid: boolean; /** * A control is `invalid` when its `status === INVALID`. * * In order to have this status, the control must have failed * at least one of its validation checks. */ readonly invalid: boolean;
valid屬性表示參數(shù)值校驗(yàn)后結(jié)果不通過(guò)為false,通過(guò)為true。
invalid則表示參數(shù)值校驗(yàn)不通過(guò)為true,通過(guò)為false。
/** * A control is `dirty` if the user has changed the value * in the UI. * * Note that programmatic changes to a control's value will * *not* mark it dirty. */ readonly dirty: boolean; /** * A control is marked `touched` once the user has triggered * a `blur` event on it. */ readonly touched: boolean;
dirty表示你是否沒(méi)有改變過(guò)這個(gè)參數(shù)的值
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Angular+ionic實(shí)現(xiàn)折疊展開(kāi)效果的示例代碼
- Cordova(ionic)項(xiàng)目實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用
- ionic+html5+API實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用
- ionic2.0雙擊返回鍵退出應(yīng)用
- 三步實(shí)現(xiàn)ionic3點(diǎn)擊退出app程序
- ionic4+angular7+cordova上傳圖片功能的實(shí)例代碼
- Angular 4.x+Ionic3踩坑之Ionic3.x pop反向傳值詳解
- 基于Ionic3實(shí)現(xiàn)選項(xiàng)卡切換并重新加載echarts
相關(guān)文章
Angular應(yīng)用prerender預(yù)渲染提高頁(yè)面加載速度
這篇文章主要介紹了Angular應(yīng)用prerender預(yù)渲染提高頁(yè)面加載速度,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10AngularJS全局警告框?qū)崿F(xiàn)方法示例
這篇文章主要介紹了AngularJS全局警告框?qū)崿F(xiàn)方法,結(jié)合實(shí)例形式分析了AngularJS全局警告框的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05解決Angular.Js與Django標(biāo)簽沖突的方案
AngularJS和django的模板都是用{{}}來(lái)引用變量的,這就導(dǎo)致了沖突,所以這篇文章主要就給大家介紹了如何解決Angular.Js與Django標(biāo)簽沖突的方案,有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-12-12AngularJS 依賴注入詳解和簡(jiǎn)單實(shí)例
本文主要介紹AngularJS 依賴注入,這里對(duì)依賴注入做了詳細(xì)介紹講解,并提供效果圖和示例代碼以便學(xué)習(xí)參考2016-07-07AngularJS實(shí)現(xiàn)表單驗(yàn)證功能詳解
這篇文章主要為大家詳細(xì)介紹了AngularJS實(shí)現(xiàn)表單驗(yàn)證功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Angular4.x Event (DOM事件和自定義事件詳解)
今天小編就為大家分享一篇Angular4.x Event (DOM事件和自定義事件詳解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10AngularJS向后端ASP.NET API控制器上傳文件
這篇文章主要介紹了AngularJS向后端ASP.NET API控制器上傳文件的相關(guān)資料,需要的朋友可以參考下2016-02-02Angularjs中date過(guò)濾器失效的問(wèn)題及解決方法
這篇文章主要介紹了Angularjs中date過(guò)濾器失效的問(wèn)題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07