Я пытаюсь создать директиву для полей ввода, которая проверяет использование пользовательской функции, переданной из внешней области, например:
HTML:
<input type="text" custom-validator="checkValidity"/>
Контроллер:
$scope.checkValidity = function(value){
return $scope.invalidWords.indexOf(value) === -1;
}
Для этого я создал подробный планкер: http://plnkr.co/edit/H5A5O3?p=preview
Проверка работает, но, похоже, она не работает с директивами по умолчанию, в этом случае ng-disabled не работает, и я не могу получить доступ к переменной, используемой в ng-model!
Это моя директива:
app.directive('customValidator', function() {
return {
require: "ngModel"
, scope: { customValidator: '='}
, link: function postLink(scope, elm, attrs, ctrl) {
var validator = function(value) {
if(scope.customValidator && scope.customValidator(value)) {
ctrl.$setValidity('custom-validator', true);
return value;
}
ctrl.$setValidity('custom-validator', false);
return undefined;
}
ctrl.$parsers.unshift(validator);
ctrl.$formatters.unshift(validator);
}
}
});
Я не могу понять, что происходит, мне очень нужна помощь!
Я должен остаться на Angular 1.0.7