ChatGPT解决这个技术问题 Extra ChatGPT

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

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

<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.contactID 传递给 addToCount()。有人可以为此建议正确的语法吗?


L
Linus Borg

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

@click="addToCount(item.contactID)"

如果您还需要事件对象:

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

好的!!正是我需要知道的
事件对象拯救了一天~
A
Alexander Kim

当您使用 Vue 指令时,表达式是在 Vue 的上下文中计算的,因此您不需要将内容包装在 {} 中。

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

在您的情况下,只需使用 @click="addToCount(item.contactID)"


如果我要传递的参数不是迭代的和可键入的,而是硬编码为 <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 元素的文本内容怎么办?
@AkinHwan 如果已经硬编码,只需将文本作为参数发送 @click="switchRoom('Sky Room')"
如果它不属于 vue 实例怎么办。例如,您想要覆盖图表点击,并且图表位于 vue 指令中,但本身不是 vue。您需要以某种方式从覆盖 vue 点击函数调用底层点击事件吗?
f
fotiecodes

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

在您的情况下,您有 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 已经提供的答案