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 相关文章推荐
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
用js实现博客打赏功能
Oct 24 Javascript
js 调用百度分享功能
Feb 27 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
Express本地测试HTTPS的示例代码
Jun 06 Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 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 空格,换行,跳格使用说明
2009/12/18 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
基于js中document.cookie全面解析
2017/09/14 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python内置函数—vars的具体使用方法
2017/12/04 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
python os.rename实例用法详解
2020/12/06 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
给排水工程师岗位职责
2013/11/21 职场文书
节能宣传周活动总结
2014/05/08 职场文书
文明演讲稿范文
2014/05/12 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL