Как передать регулярное выражение из директивы на вход AngularJs
У меня есть эта директива
angular.module('tutors.components')
.directive('formValidator', function() {
return {
restrict: 'A'
link: function (scope, element, attrs) {
function nameValidator (input) {
var regExp : "/^[a-zA-Z']*$/";
var validator : regExp.test(input);
return validator;
}
};
});
И этот HTML
<input form-Validator
type="text"
required
name="firstName"
class="form-control"
ng-maxlength="20"
placeholder="First name"
ng-model="user.firstName"
ng-disabled="vm.isLoading"
tooltip="{{requiredMsg}}"
tooltip-placement="top"
tooltip-trigger="focus"
tooltip-enable="signupForm.firstName.$error.required && signupForm.firstName.$touched">
и я хочу запустить директиву, чтобы она проверяла текст, введенный во входные данные, я попытался использовать шаблон ng, например этот ng-pattern="/[a-zA-Z]+/", но это не сработало (я все еще предпочитаю использовать это по директиве)
1 ответ
У вашей директивы должен быть маленький случай form-validator
получить вызов директивы компилятором.
Кроме того, вам нужно изменить свой nameValidator
код функции ниже.
.directive('formValidator', function() {
return {
restrict: 'A',
require: 'ngModel', //to get ngModelController
link: function(scope, element, attrs, ngModel) {
function nameValidator(input) {
var regExp = "/^[a-zA-Z]$/";
var validator = regExp.test(input);
return validator;
}
ngModel.$validators.push(nameValidator); //should pushed to validators to validate
}
}
})
ИЛИ ЖЕ ng-pattern
должно быть хорошо, только оно должно иметь ^
(Начните) & $
(конец)
ng-pattern="/^[a-zA-Z]*$/"