任何人都可以向我解释这段代码是如何工作的。
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()
功能?
答案 0 :(得分:1)
查看ngModelController的文档。由于该指令需要ngModel,因此它接收ngModelController作为链接函数的第四个参数。关于您的其他问题:
$scope.watch
(应该是$scope.$watch
)调用在指令运行的元素的validate属性上设置watch。如果validate属性由于某种原因而改变(例如,它绑定到值改变的AngularJS表达式),则将执行作为第二个参数传递的函数。此函数重置视图值,该值重新触发注册为解析器的validate函数。