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 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
js字符编码函数区别分析
Dec 28 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
动态载入js提高网页打开速度的方法
Jul 04 Javascript
js鼠标点击图片实现随机变换图片的方法
Feb 16 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
微信小程序开发技巧汇总
Jul 15 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
Sep 26 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入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python的Django框架安装全攻略
2015/07/15 Python
Python随机读取文件实现实例
2017/05/25 Python
Python文件和流(实例讲解)
2017/09/12 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
Python中dict和set的用法讲解
2019/03/28 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
django序列化serializers过程解析
2019/12/14 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
思想汇报范文
2013/11/04 职场文书
高中地理教学反思
2014/01/29 职场文书
科研课题实施方案
2014/03/18 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
妇联主席先进事迹
2014/05/18 职场文书
小学课外阅读总结
2014/07/09 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
补充协议书
2015/01/28 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python