Я использую $validator
, чтобы написать настраиваемую форму проверки валидации.
В настоящее время это выглядит следующим образом:
module.directive('tweetLength', function(URLDetector) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attrs, ctrl) {
var allowedCharacters;
allowedCharacters = parseInt(attrs.tweetLength);
ctrl.$validators.tweetLength = function(modelValue, viewValue) {
var result;
return result = URLDetector.urlAdjustedCharacterCount(modelValue) <= allowedCharacters;
};
}
};
});
Он проверяет модель элемента он прикреплен к количеству символов, в то время как с учетом ссылок укорочения (так ng-minlength
и ng-maxlength
не работают) , Он возвращает false, когда требования не выполняются. Проблема в том, что когда он возвращает false modelValue
идет undefined
. Я знаю, что в этот момент значение предназначено для хранения в $$invalidModelValue
, но мне все еще нужно значение в исходной модели, так как оно используется в другом месте в представлении.
Есть ли способ остановить Угловое перемещение и изготовление оригинальной модели undefined
? Я знаю, что эта проблема может быть решена в контроллере формы, но я не думаю, что это правильный способ сделать это, так как я хочу отключить кнопку отправки формы, используя состояние формы, а не некоторую внешнюю переменную. Есть ли альтернативный способ подхода к этой проблеме при использовании проверки на угловую форму? .
Вы можете. Из документа [docs] (https://docs.angularjs.org/api/ng/directive/ngModelOptions) 'ng-model-options =" {allowInvalid: true} "' – aarosil
Это именно он. –