angular 基于ng-messages的表单验证实例


Posted in Javascript onMay 04, 2017

最近在学习angular,那么今天也算个学习笔记吧!

html

<div class="form-group" ng-class="{'has-error': myForm.myName.$touched && myForm.myName.$invalid}">
  <label class="col-xs-2 control-label">name</label>
  <div class="col-xs-6">
    <input type="text" class="form-control" name="myName" ng-model="formData.username"
        placeholder="2-10个中英文字符,aaa会重名,必填"
        name-check minlength="2" maxlength="10" required>
  </div>
  <div class="col-xs-4 form-control-static text-danger" ng-messages="myForm.myName.$error"
           ng-messages-include="demos/form/error.html" ng-show="myForm.myName.$touched">
  </div>
</div>

ng-messages="myForm.myName.$error" 给出错误类型(required, char, exist, minlength)

error.html

<span ng-message="required">必填</span>
<span ng-message="char">非法字符</span>
<span ng-message="exist">名称已存在</span>
<span ng-message="minlength">太短了</span>

directive name-check 利用ngModel 的$validators,& $asyncValidators 添加自定义验证

app.directive('nameCheck', nameCheck);

nameCheck.$inject = ['HttpService', '$q'];

function nameCheck(HttpService, $q){

  var NAME_REG = /^[a-zA-Z\u4e00-\u9fa5]+$/;

  return {
    restrict: 'A',
    require: 'ngModel',
    link:function($scope,element,attrs,ctrl){

      ctrl.$validators.char = function(modelValue, viewValue) {
        var value = modelValue || viewValue;
        if(!NAME_REG.test(value)){
          return false;
        }
        return true;
      };
      ctrl.$asyncValidators.exist = function(modelValue, viewValue){
        var value = modelValue || viewValue;
        var deferred = $q.defer();
        HttpService.get('api/users/' + value).then(function(res) {
          if(res.isExist){
            deferred.reject(false);

          }
          deferred.resolve(true);
        })

        return deferred.promise;
      }
    }
  }
}

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

Javascript 相关文章推荐
JS 拼图游戏 面向对象,注释完整。
Jun 18 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
Oct 20 Javascript
JavaScript淡入淡出渐变简单实例
Aug 06 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
May 03 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
浅谈html转义及防止javascript注入攻击的方法
Dec 04 Javascript
详解JavaScript数组过滤相同元素的5种方法
May 23 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
Vue中v-for的数据分组实例
Mar 07 Javascript
angular组件间通讯的实现方法示例
May 07 Javascript
JS创建自定义对象的六种方法总结
Dec 15 Javascript
JS实现标签页切换效果
May 04 #Javascript
ES6下React组件的写法示例代码
May 04 #Javascript
JS触摸事件、手势事件详解
May 04 #Javascript
详解Angular 4.x Injector
May 04 #Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 #Javascript
详解Node.js串行化流程控制
May 04 #Javascript
纯原生js实现贪吃蛇游戏
Apr 16 #Javascript
You might like
DIY实用性框形天线
2021/03/02 无线电
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
PHP中list方法用法示例
2016/12/01 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
西安交大自主招生自荐信
2014/01/27 职场文书
部队万能检讨书
2014/02/20 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
教师反邪教心得体会
2016/01/15 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
Win10 Anaconda安装python-pcl
2022/04/29 Servers