如何将参数传递给Vue @click事件处理程序


94

我正在使用Vue.js创建一个表,我想onClick为每个通过的行定义一个事件contactID。这是代码:

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

在单击一行时,它正在调用addToCount(),这是有效的。我想传递item.contactIDaddToCount()。有人可以为此建议正确的语法吗?

Answers:


113

使用Vue指令时,表达式是在Vue的上下文中求值的,因此您无需将内容包装在中{}

@click只是v-on:click指令的简写,因此适用相同的规则。

就您而言,只需使用 @click="addToCount(item.contactID)"


1
如果我要传递的参数没有经过迭代并且不是可设置键的,而是如此硬编码,<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> 并且我想在switchRoom方法中使用a元素的文本内容怎么办?
阿金焕

1
@AkinHwan如果已经进行了硬编码,只需将文本作为参数发送@click="switchRoom('Sky Room')"
Brian Glaz

135

只需使用普通的Javascript表达式即可,不需要{}或不需要任何东西:

@click="addToCount(item.contactID)"

如果您还需要事件对象:

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

0

我遇到了同样的问题,这是我如何通过的方法:

在你的情况下,你有addToCount()被称为。现在可以在用户点击时传递参数,您可以说@click="addToCount(item.contactID)"

在函数实现中,您可以收到以下参数:

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!

}

谢谢。您的答案与@Linus已提供的答案类似
user761100,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.