Как игнорировать событие @input при загрузке страницы из vuex-вычисляемого геттера в vue?

#vue.js #vuex #quasar-framework #debounce

#vue.js #vuex #quasar-framework #отменить

Вопрос:

Я использую vue и debounce для автоматического сохранения моих текстовых полей после 3 секунд отсутствия ввода моих пользователей. Способ, которым я запускаю debounce, основан на @input событии в каждом из текстовых полей. v-model Для всех текстовых полей заполняется из вызываемого vuex вычисляемого средства получения currentItem .

Когда страница загружается, действие, которое заполняет currentItem , отправляется и currentItem получает данные из действия. Это вызывает @input событие, и, следовательно, моя функция debounce срабатывает через 3 секунды после загрузки страницы.

Как я могу предотвратить запуск @input события при загрузке страницы в этой ситуации или найти обходной путь здесь?

Довольно озадаченный тем, что попробовать, похоже, что любой маршрут, по которому я иду, я столкнусь с тем же затруднительным положением.

 <div class="col-6 q-pa-sm">
  <q-input
    v-model="currentItem.imageUrl"
    @input="putItem"
    label="Image URL"
    outlined>
  </q-input>
</div>
 
 putItem() {
  this.savingStatus = "Saving changes...";
  this.debounceItem();
},
 
 debounceItem: debounce(function() {
   this.$axios
      .put(`/v1/items/${this.currentItem.id}`, this.currentItem)
      .catch(error => {
         this.showSnackbarError(error);
       })
      }
}, 1000),
 

Комментарии:

1. Что такое <q-input> ? Какая структура? Пожалуйста, отметьте вопрос.

2. квазар. извинения.

3. Почему бы не посмотреть изменения в currentItem.imageUrl ? Наблюдатель будет запущен только при изменении его значения.

4. Значение все равно будет меняться при загрузке страницы, когда отправляется действие vuex, заполняющее CurrentItem данными

5. Насколько я понимаю input , срабатывает только тогда, когда пользователь изменяет входное значение (например, вводя в поле). Изменение входного значения программно не должно вызывать срабатывание input события. Я только что провел тест на jsfiddle и подтвердил это, поэтому я не понимаю, как input событие запускается для вас. Можете ли вы привести воспроизводимый пример?