Угловая форма ng-обязательное выражение вызывается несколько раз

0

Я создаю форму, в которой у моих полей могут быть обязательные условия, основанные на других полях. Я использую что-то вроде

ng-required="ctrl.evaluateCond(item.condition)"

для каждого из моих полей, и это работает. всякий раз, когда пользователь меняет какой-то ввод, все по всем полям переоцениваются. Проблема в том, что, по-видимому, она вызывает эту функцию calculateCond несколько раз для каждого поля? Это проблема, потому что позже я буду иметь условия, которые делают вызовы на сервере, чтобы получить некоторые данные, необходимые для проверки, и этот вызов, конечно, должен быть сделан только один раз по соображениям производительности. Я думал, должен ли я сделать какой-то синглтон и инициализировать логическую переменную, когда он начнется, так что, когда это будет достигнуто, другие вызовы будут заблокированы до тех пор, пока это логическое значение не будет отменено. Тип примитивного механизма блокировки. Однако это похоже на уродливое обходное решение, и я хотел знать, есть ли у кого-нибудь другие идеи?

Теги:
validation
forms

1 ответ

1
Лучший ответ

Функция называется многократной, поскольку угловые поддерживают двустороннюю привязку данных. Когда изменяется переменная области видимости, функция $digest запускает соответствующие слушатели, пересчитывает значения, и представление повторно отображается.

В вашем случае вы можете использовать модель модели debounce в своем поле ввода, чтобы модель обновлялась только после указанного интервала времени, таким образом вы можете ограничить частоту вызовов функций, связанных с ng-required.

пример

<input type="text" name="userName"
             ng-model="user.name"
             ng-model-options="{ debounce: 1000 }" />
  • 0
    Здорово, спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню