angular 基于ng-messages的验证
发布时间:2020-12-17 09:20:54 所属栏目:安全 来源:网络整理
导读: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
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-Zu4e00-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; } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |