Vue.js: вызов функции при изменении

1

Я создаю компонент в Vue.js. У меня есть вход на странице, где пользователь может запросить определенную сумму кредита. В настоящее время я пытаюсь создать функцию, которая будет регистрировать сумму ввода на консоли, когда я ее ввешу. (В конце концов, я собираюсь показать/скрыть запрошенные документы на основе ввода пользователя. попросите их нажать кнопку отправки.)

Приведенный ниже код регистрирует его, когда я нажимаю/выхожу из поля ввода. Вот мой компонент.vue:

<template>
    <div class="col s12 m4">
      <div class="card large">
        <div class="card-content">
          <span class="card-title">Credit Limit Request</span>
          <form action="">
            <div class="input-field">
              <input v-model="creditLimit" v-on:change="logCreditLimit" id="credit-limit-input" type="text">
              <label for="credit-limit-input">Credit Limit Amount</label>
            </div>
          </form>
          <p>1. If requesting $50,000 or more, please attach Current Balance Sheet (less than 1 yr old).</p>
          <p>2. If requesting $250,000 or more, also attach Current Income Statement and Latest Income Tax Return.</p>
        </div>
      </div>    
    </div>
  </div>
</template>

<script>
export default {
  name: 'licenserow',
  data: () => ({
    creditLimit: ""
  }),
  methods: {
    logCreditLimit: function (){
      console.log(this.creditLimit)
    }
  }
}
</script>

Если я меняю methods на computed, он работает, но я получаю сообщение об ошибке " Invalid handler for event: change каждый раз, когда он регистрирует значение".

Теги:
vue.js
vuejs2

2 ответа

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

Используйте input событие.

<input v-model="creditLimit" v-on:input="logCreditLimit" id="credit-limit-input" type="text">

change только огни, когда элемент теряет фокус для входных элементов. input срабатывают при каждом изменении текста.

  • 1
    Это сделал это. Я знал, что это было что-то простое. =) Спасибо!
  • 0
    отлично работает как слушатель изменений и даже с v-моделью. Спасибо
0

Связать событие @input вместе с v-моделью не нужно. Просто привяжите v-модель и все. Модель автоматически обновляется на входном событии.

new Vue({
  el: '#app',
  data: {
    message: ''
  }
})
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>

<div id="app">
  <input type="text" v-model="message"><br>
  Output: <span>{{ message }}</span>
</div>

И если вам нужно войти в систему, перейдите на консоль, создайте специальный наблюдатель:

new Vue({
  el: '#app',
  data: {
    message: ''
  },
  watch: {
    message: function (value) {
      console.log(value) // log it BEFORE model is changed
    }
  }
})
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>

<div id="app">
  <input type="text" v-model="message"><br>
  Output: <span>{{ message }}</span>
</div>

Ещё вопросы

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