@SevSergei

Как следить за двумя полями во Vue.js чтобы они не запускались по очереди?

Пишу калькулятор
Есть 2 поля c v-model за которыми слежу через watch.

У каждого watch есть своя функция которая отрабатывается при изменении одного поля и записывается в другое.

Проблема в том, что запускается сразу функция из watch (поле А изменяет Б, Б изменяет А), эдакая мини рекурсия.

Как сделать так, чтобы при изменении данных пользователем watch срабатывал, а когда я записываю данные - нет?
  • Вопрос задан
  • 930 просмотров
Решения вопроса 1
@SevSergei Автор вопроса
если кому поможет:
watch - использовать когда есть только 1 v-model параметр и от него не зависят другие input
computed (get,set) + переменная для хранения - когда данные зависят друг от друга

объясню поподробней:
у меня было 2 инпута, нужно чтобы при изменении данных поля (любого) пересчитывались
курс USD, курс RUB

использовал watch и получалось что из-за погрешности скрипт впадал в цикл, т.к. следил за двумя полями
если использовать computed - то все ок.
всем спасибо
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimovich85
@dimovich85
https://u-academy.net/
Тоже не очень понял проблему, но, если правильно понял, то добавьте к директиве модификатор: v-model.lazy="..." Этот модификатор подписывается на событие change, а не на событие input, а событие change наступает после того, как value изменилось и ввод прекращен, например, ввод прошел и потерян фокус. Подробнее тут.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
Как сделать так, чтобы при изменении данных пользователем watch срабатывал, а когда я записываю данные - нет?

Что-то не понял, а зачем watch? Хотите реагировать только на действия пользователя - ну так и делайте именно это, watch долой, слушайте событие input.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы