Cómo pasar un parámetro al controlador de eventos Vue @click

95

Estoy creando una tabla usando Vue.js y quiero definir un onClickevento para cada fila que pasa contactID. Aquí está el código:

<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>   

Al hacer clic en una fila, está llamando addToCount(), que está funcionando. Quiero pasar item.contactIDa addToCount(). ¿Alguien podría sugerir la sintaxis correcta para esto?

user761100
fuente

Respuestas:

116

Cuando usa directivas de Vue, las expresiones se evalúan en el contexto de Vue, por lo que no es necesario ajustar las cosas {}.

@clickes una abreviatura de v-on:clickdirectiva, por lo que se aplican las mismas reglas.

En su caso, simplemente use @click="addToCount(item.contactID)"

Brian Glaz
fuente
1
¿Qué sucede si el argumento que quiero pasar no se itera y se puede codificar, sino que está codificado como tal <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> y quería usar el contenido de texto de los elementos a en el método switchRoom?
Akin Hwan
1
@AkinHwan Si ya está codificado, simplemente envíe el texto como parámetro@click="switchRoom('Sky Room')"
Brian Glaz
135

Simplemente use una expresión de Javascript normal, nada {}o nada necesario:

@click="addToCount(item.contactID)"

si también necesita el objeto de evento:

@click="addToCount(item.contactID, $event)"
Linus Borg
fuente
0

Tuve el mismo problema y así es como me las arreglo para pasar:

En tu caso tienes addToCount()cuál se llama. ahora para pasar un parámetro cuando el usuario hace clic, puede decir@click="addToCount(item.contactID)"

en la implementación de su función, puede recibir los parámetros como:

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!

}
Fotie M. Constant
fuente
Gracias. Su respuesta es similar a la que ya proporcionó @Linus
user761100