Передача события и аргумента 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.