[英]validate password directive in angularjs
谁能解释一下这段代码的工作原理。
HTML标记
<input type="password" ng-model="password" class="form-control" placeholder="Password" required>
<input type="password" ng-model="confirm_password" class="form-control" placeholder="Password" required validate-equals="password">
指令代码
angular.module('app')
.directive('validate', function () {
return {
require: "ngModel",
link: function postLink(scope, element, attrs, ngModelCtrl) {
function validate(value){
var valid = (value === scope.$eval(attrs.validate));
ngModelCtrl.$setValidtity('equal', valid);
return valid ? value : undefined;
}
ngModelCtrl.$parsers.push(validate);
ngModelCtrl.$formatters.push(validate);
$scope.$watch(attrs.validate, function(){
ngModelCtrl.$setViewValue(ngModelCtrl.$viewvalue);
})
}
};
});
谁能向我解释以下questions
。
下面的代码在directive
做什么?
$scope.watch(attrs.validate, function(){
ngModelCtrl.$setViewValue(ngModelCtrl.$viewvalue);
});
该value
如何传递给validate()
函数?
查看ngModelController的文档。 由于此指令需要ngModel,因此它将ngModelController接收为链接函数的第四个参数。 关于您的其他问题:
$scope.watch
(实际上应该是$scope.$watch
)调用在操作指令的元素的validate属性上建立了一个监视 。 如果validate属性由于某种原因而发生更改(例如,绑定到其值更改的AngularJS表达式),则将执行作为第二个参数传递的函数。 此函数将重置视图值,从而重新触发注册为解析器的验证函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.