Я только что прочитал потрясающий angular page on form validation, и я, вероятно, что-то пропустил, но как я могу применить свойство на конкретном валидаторе.Откажитесь только от одного валидатора
Позвольте мне объяснить проблему. У меня есть форма, которая проверяет открытый ключ, и для этого у меня есть директива с именем key-check, которая содержит несколько валидаторов. Некоторые из них являются локальными и синхронными, как формат ключа, и существует еще одна асинхронная проверка того, доступен ли ключ на сервере (асинхронно).
Я не хочу, чтобы мой сервер был потоп, ни угловое приложение, чтобы быть замедлен, поэтому я использую, что прохладно дети называют дребезга и мой вклад, кажется, что-то вроде:
<input type="text" ... ng-model="key" key-check ng-model-options="{ debounce: 700 }" ng-minlength="5" ng-maxlength="50"/>
И директива, как:
ctrl.$validators.keyFormatCheck = function(modelValue) {
// return boolean
}
ctrl.$asyncValidators.KeyAvailabilityCheck = function(modelValue) {
// return promise
}
это работа как шарм, но все проверки выполняются с задержкой 700 мс, и мне интересно, если это возможно сделать keyFormatCheck без дребезга и KeyAvailabilityCheck с ним. Я, вероятно, могу использовать старый хороший способ с $ timeout, но я предпочитаю делать это угловой способ.
Любые идеи?
You всегда может передать параметр вашей директиве –
Проблема не в том, что я не могу добавить свойство в свою директиву. Проблема в том, что внутри директивы, как я могу установить debounce на валидаторе? –
Затем вы добавляете $ timeout соответственно –