我在 AngularJS 中创建了一个自定义指令。该指令使用隔离作用域,它以某种方式阻止了标准 ngModel 在同一元素上的绑定。我想创建一个确认密码字段(示例中为便于阅读的文本)。
<input type="text" name="one" ng-model="fields.field_one">
<input type="text" validate-match="fields.field_one" name="two" ng-model="field_two">
当没有匹配项时,我的指令使该字段无效。
app.directive('validateMatch', function() {
return {
require: 'ngModel',
scope: { matchValue: '=validateMatch' },
link: function(scope, elm, attr, ctrl) {
scope.$watch('matchValue', function(value) {
ctrl.$setValidity('match',
ctrl.$viewValue === value
|| !ctrl.$viewValue && !value);
});
function validate(value) {
ctrl.$setValidity('match', value === scope.matchValue);
return value;
}
ctrl.$parsers.push(validate);
ctrl.$formatters.push(validate);
}
}
});
问题是,为什么我不能通过更改模型来更改该字段的值?第一个字段工作得很好。
查看plunker了解详细信息和注释代码。