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 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
理解javascript闭包
Dec 15 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
js实现3D照片墙效果
Oct 28 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
vue interceptor 使用教程实例详解
2018/09/13 Javascript
django使用xlwt导出excel文件实例代码
2018/02/06 Python
python 调用钉钉机器人的方法
2019/02/20 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
python程序如何进行保存
2020/07/03 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
群众路线调研报告范文
2014/11/03 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
未中标通知书
2015/04/17 职场文书
胡桃夹子观后感
2015/06/11 职场文书