ionic使用angularjs表单验证(模板验证)


Posted in Javascript onDecember 12, 2018

1什么是模板验证

顾名思义模板验证就是通过一些angularjs的属性来在html标签中验证,为了往模板驱动表单中添加验证机制,你要添加一些验证属性,就像原生的 HTML 表单验证器。 Angular 会用指令来匹配这些具有验证功能的指令。每当表单控件中的值发生变化时,Angular 就会进行验证,并生成一个验证错误的列表(对应着 INVALID 状态)或者 null(对应着 VALID 状态)。

2示例

这是我写的一个小demo,这种验证方式无需写js代码全部在标签 里使用angularjs的属性,其他地方也无需引入angular forms库,因为ionic会自动默认引入。

<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()">
   去注册
  </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>

运行效果如下:

ionic使用angularjs表单验证(模板验证)

3核心属性

可以看到[(ngModel)]="user.username"作用是绑定了我们在ts文件中定义的变量。

#username="ngModel"的作用是把我们绑定的模型值命名成username,变成了一个FormControl对象,这里不必纠结下节会讲。

required 验证是否为空 maxlength="10" 最大长度 minlength="6"最小长度。这些都是我们需要验证的条件。

*ngIf="username.invalid && (username.dirty || username.touched)"

*ngIf标签等于true时将错误信息显示出来username.invalid表示验证不合法返回true,username.dirty 判断是否改变了这个参数的值,username.touched表示是否有碰过表单,作用在于,刚打开表单页面是,里面参数都是空的,但无需显示错误信息。

进入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属性表示参数值校验后结果不通过为false,通过为true。

invalid则表示参数值校验不通过为true,通过为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表示你是否没有改变过这个参数的值

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSQL 批量图片切换的实现代码
May 05 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
Javascript基础教程之for循环
Jan 18 Javascript
js拖拽的原型声明和用法总结
Apr 04 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
Webpack中publicPath路径问题详解
May 03 Javascript
vue安装和使用scss及sass与scss的区别详解
Oct 15 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
Vue3为什么这么快
Sep 23 Javascript
微信小程序自定义导航教程(兼容各种手机)
Dec 12 #Javascript
express express-session的使用小结
Dec 12 #Javascript
解决vue移动端适配问题
Dec 12 #Javascript
js中位运算的运用实例分析
Dec 11 #Javascript
js中的数组对象排序分析
Dec 11 #Javascript
详解Vue源码之数据的代理访问
Dec 11 #Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 #Javascript
You might like
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP最常用的正则表达式
2017/02/13 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
JavaScript的一些小技巧分享
2021/01/06 Javascript
python线程中同步锁详解
2018/04/27 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python中pip的安装与使用教程
2018/08/10 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
小车司机岗位职责
2013/11/25 职场文书
公务员培训心得体会
2013/12/28 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
个人原因辞职信模板
2015/05/13 职场文书
python中如何对多变量连续赋值
2021/06/03 Python