<form name="form">
<input type="text" placeholder="请输入账号" />
<input type="password" name="password" ng-model="password" required placeholder="请输入密码">
<input type="password" name="passwordConfirm" ng-model="passwordConfirm" equal-to="password" placeholder="请再次输入密码">
<span ng-show="form.passwordConfirm.$error.equalTo">两次密码不一致</span>
</form>
1 angular.module("Valid",[])
2
3 .directive("equalTo", function () {
4 return {
5 require: "ngModel",
6 link: function (scope, ele, attrs, ctrl) {
7
8 console.log(scope);//打印当前作用域
9 console.log(attrs);//打印当前标签属性列表
10 console.log(ctrl);//打印当前ctrl
11
12 var target = attrs["equalTo"];//获取自定义指令属性键值
13
14 if (target) {//判断键是否存在
15 scope.$watch(target, function () {//存在启动监听其值
16 ctrl.$validate()//每次改变手动调用验证
17 })
18
19 // 获取当前模型控制器的父控制器FormController
20 var targetCtrl = ctrl.$$parentForm[target];//获取指定模型控制器
21 console.log(targetCtrl)
22
23 ctrl.$validators.equalTo = function (modelValue, viewValue) {//自定义验证器内容
24
25 var targetValue = targetCtrl.$viewValue;//获取password的输入值
26
27 return targetValue == viewValue;//是否等于passwordConfirm的值
28 }
29
30 ctrl.$formatters.push(function (value) {
31 console.log("正在进行数据格式化的值:",value)
32 return value;
33 })
34
35 ctrl.$parsers.push(function (value) {
36 console.log("正在进行数据转换的值:",value)
37 return value;
38 })
39 }
40 }
41 }
42 })