Передача события и аргумента v-on в Vue.js

Я передаю параметр в v-on:input директивы v-on:input. Если я не пройду, я могу получить доступ к событию в методе. Есть ли способ, по которому я могу получить доступ к событию при передаче параметра функции. Не то, что я использую vue-router:

Это не пропускает параметр. Я могу получить доступ к объекту события

HTML

<input type="number" v-on:input="addToCart" min="0" placeholder="0">

Javascript

  methods: {
    addToCart: function (event) {

      // I need to access the element by using event.target
      console.log('In addToCart')
      console.log(event.target)
    }
  }

Это при передаче параметра. Я не могу получить доступ к объекту события

HTML

<input type="number" v-on:input="addToCart(ticket.id)" min="0" placeholder="0">

Javascript

  methods: {
    addToCart: function (id) {

      // How can I access the element by using event
      console.log('In addToCart')
      console.log(id)
    }
  }

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

https://jsfiddle.net/lookman/vdhwkrmq/

Ответы

Ответ 1

Если вы хотите получить доступ к объекту события, а также переданным данным, вы должны передать event и ticket.id как параметры, например следующие:

HTML

<input type="number" v-on:input="addToCart($event, ticket.id)" min="0" placeholder="0">

Javascript

methods: {
  addToCart: function (event, id) {
    // use event here as well as id
    console.log('In addToCart')
    console.log(id)
  }
}

См. Рабочую скрипту: https://jsfiddle.net/nee5nszL/

Отредактировано: case with vue-router

Если вы используете vue-router, вам, возможно, придется использовать $ event в вашем v-on:input методе v-on:input например:

<input type="number" v-on:input="addToCart($event, num)" min="0" placeholder="0">

Здесь работает скрипка.

Ответ 2

Вы также можете сделать что-то вроде этого...

<input @input="myHandler('foo', 'bar', ...arguments)">

Эван Вы сами рекомендовали эту технику в одном сообщении на форуме Vue. В общем, некоторые события могут вызывать более одного аргумента. Также, как указано в документации, внутренняя переменная $ event предназначена для передачи исходного события DOM.