Przekazuję parametr w v-on:input
dyrektywach. Jeśli go nie zdam, uzyskam dostęp do zdarzenia w metodzie. Czy istnieje sposób, w jaki mogę nadal uzyskać dostęp do zdarzenia podczas przekazywania parametru do funkcji. Nie to, że używam routera vue:
Dzieje się to bez przekazywania parametru. Mam dostęp do obiektu zdarzenia
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)
}
}
Dzieje się tak podczas przekazywania parametru. Nie mam dostępu do obiektu zdarzenia
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)
}
}
Oto fragment kodu, który powinien wystarczyć, aby odtworzyć problem, który mam
Property or method "event" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option
v-on:input
?$event
zmienną do wywołania metodyv-on:input="addToCart($event, num)"
$event
, nieevent
Możesz też zrobić coś takiego ...
Sam Evan You polecił tę technikę w jednym poście na forum Vue. Ogólnie rzecz biorąc, niektóre zdarzenia mogą emitować więcej niż jeden argument. Jak podaje dokumentacja, wewnętrzna zmienna $ event jest przeznaczona do przekazywania oryginalnego zdarzenia DOM.
źródło
W zależności od tego, jakie argumenty musisz przekazać, szczególnie w przypadku niestandardowych programów obsługi zdarzeń, możesz zrobić coś takiego:
<div @customEvent='(arg1) => myCallback(arg1, arg2)'>Hello!</div>
źródło