Я создал пользовательскую проверку «validateSprequired» с использованием пользовательской директивы.
Мне нужно проверить элемент на основе флажка, если флажок установлен, мне нужно игнорировать проверку, если флажок не установлен, мне нужно проверить элемент с пользовательской проверкой.
Я пытался использовать, если условие на HTML и Javascript также, но я не могу удалить активировать и деактивировать пользовательские проверки.
мой HTML
<input name="checkboxes" ng-model="vm.Assessment.infoOnly" id="checkboxes-0"
type="checkbox" value="true" ng-click="vm.isInfoOnly($event)">
<input name="peoplepicker" id="peoplepicker" validate-sppprequired="true"
type="text" ng-model="vm.Assessment.AssessmentDueDate">
Код контроллера
vm.isInfoOnly = function (event) {
var elem = $("#peoplepicker");
if (event.target.checked) {
elem.attr('validate-sppprequired', false);
elem.removeAttr("validate-sppprequired");
vm.Assessment.LeadCommentator.errors.validateSppprequired == true; --> not working
} else {
elem.attr('validate-sppprequired', true);
}
setTimeout(function () {
$scope.$apply(function () {
$compile(elem)($scope);
});
});
}
моя директива
mainApp.directive('validateSppprequired', function ($compile) {
return {
require: '?ngModel',
scope: {
ngModel: '=',
validateSppprequired: "="
},
link: function (scope, element, attributes, ngModel) {
if (attributes.validateSppprequired == "false") {
-->not working
ngModel.$validators.validateSppprequired = function (modelValue, viewValue) {
return true;
}
//ngModel.$validators.validateSppprequired = true; --> not working
//ngModel.$setValidity("validateSppprequired", true); --> not working
ngModel.$validate();
return true;
} else {
ngModel.$validators.validateSppprequired = function (modelValue, viewValue) {
if (ngModel.$isEmpty(modelValue) || modelValue.length == 0) {
return false;
} else {
return true;
}
return false;
};
}
}
};
});
Мое требование: если флажок установлен, эта пользовательская проверка должна быть снята, если флажок не установлен, эта пользовательская проверка должна применяться.
если я начну печатать текст в тексте PeoplePicker, эта проверка работает, но с изменением флажка она не работает
angularjs добавляет оба класса «ng-valid» «ng-invalid» css при изменении флажка, поэтому angularjs всегда обрабатывается только как недействительный
при установленном флажке добавление события angularjs ниже css в текстовое поле
ng-pristine ng-untouched ng-isolate-scope ng-invalid ng-invalid-validate-sppprequired ng-valid ng-scope ng-valid-validate-sppprequired
при включенном флажке не отмеченное событие angularjs добавление ниже css в текстовое поле
ng-pristine ng-untouched ng-isolate-scope ng-invalid ng-invalid-validate-sppprequired ng-scope ng-valid-validate-sppprequired
в angularjs есть ли способ включить или отключить пользовательскую проверку из директивы.