Jak przekazać parametr do modułu obsługi zdarzeń Vue @click


101

Tworzę tabelę za pomocą Vue.js i chcę zdefiniować onClickzdarzenie dla każdego wiersza, który przechodzi contactID. Oto kod:

<tr v-for="item in items" class="static" 
    v-bind:class="{'evenRow': item.oddeven=='1', 'oddRow': item.oddeven=='0' }"
@click="addToCount('{item.contactID}')"
>
    <td>{{item.contactName}}</td>
    <td>{{item.recipient}}</td>
</tr>   

Po kliknięciu wiersza wywołuje addToCount(), co działa. Chcę przejść item.contactIDdo addToCount(). Czy ktoś mógłby zasugerować poprawną składnię do tego?

Odpowiedzi:


121

Gdy używasz dyrektyw Vue, wyrażenia są oceniane w kontekście Vue, więc nie musisz ich zawijać {}.

@clickjest tylko skrótem dla v-on:clickdyrektywy, więc obowiązują te same zasady.

W twoim przypadku po prostu użyj @click="addToCount(item.contactID)"


2
Co się stanie, jeśli argument, który chcę przekazać, nie jest iterowany i kluczowany, ale jest zakodowany na stałe jako taki <a href="#" @click="switchRoom" class="rooms">Interview Room</a> <a href="#" @click="switchRoom" class="rooms">Green Room</a> <a href="#" @click="switchRoom" class="rooms">Bavarian Caviar Room</a> <a href="#" @click="switchRoom" class="rooms">Sky Room</a> i chciałbym użyć zawartości tekstowej elementów a w metodzie switchRoom?
— Akin Hwan

1
@AkinHwan Jeśli jest już zakodowany na stałe, po prostu wyślij tekst jako parametr@click="switchRoom('Sky Room')"
— Brian Glaz,

A jeśli nie należy do instancji vue. Na przykład chcesz przesłonić kliknięcie wykresu, a wykres znajduje się w dyrektywie vue, ale sam nie jest vue. Musisz jakoś wywołać bazowe zdarzenie kliknięcia z funkcji override vue click?
— mathtick

136

Po prostu użyj zwykłego wyrażenia JavaScript, nic {}lub nic nie jest konieczne:

@click="addToCount(item.contactID)"

jeśli potrzebujesz również obiektu zdarzenia:

@click="addToCount(item.contactID, $event)"

0

Miałem ten sam problem i oto jak udaje mi się przejść:

W twoim przypadku masz addToCount()tzw. teraz możesz powiedzieć, aby przekazać parametr po kliknięciu przez użytkownika@click="addToCount(item.contactID)"

w implementacji funkcji możesz otrzymać parametry takie jak:

addToCount(paramContactID){
 // the paramContactID contains the value you passed into the function when you called it
 // you can do what you want to do with the paramContactID in here!

}

Dzięki. Twoja odpowiedź jest podobna do tej, którą już podał @Linus
— user761100
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.