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 相关文章推荐
Span元素的width属性无效果原因及解决方案
Jan 15 Javascript
使用JQuery进行跨域请求
Jan 25 Javascript
jquery自定义下拉列表示例
Apr 25 Javascript
AngularJS ng-mousedown 指令
Aug 02 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
简述vue-cli中chainWebpack的使用方法
Jul 30 Javascript
ElementUI radio组件选中小改造
Aug 12 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 Javascript
vue el-table实现行内编辑功能
Dec 11 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
PHP的explode和implode的使用说明
2011/07/17 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
jQuery each()小议
2010/03/18 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
优秀幼教自荐信
2014/02/03 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
出纳工作检讨书
2014/10/18 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python
MySQL视图概念以及相关应用
2022/04/19 MySQL
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server