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实现select跳转功能代码
Oct 22 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
js中跨域方法原理详解
Jul 19 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
Node.js中使用jQuery的做法
Aug 17 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
bootstrap实现二级下拉菜单效果
Nov 23 Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 Javascript
原生js实现购物车
Sep 23 Javascript
浅析VUE防抖与节流
Nov 24 Vue.js
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
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python决策树分类算法学习
2017/12/22 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
python判断无向图环是否存在的示例
2019/11/22 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
迪奥官网:Dior.com
2018/12/04 全球购物
同学聚会老师邀请函
2014/01/28 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
python装饰器代码解析
2022/03/23 Python