如何将参数传递给Vue @click

use*_*100 65 vue.js

我正在使用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>   
Run Code Online (Sandbox Code Playgroud)

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

Lin*_*org 106

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

@click="addToCount(item.contactID)"
Run Code Online (Sandbox Code Playgroud)

如果你还需要事件对象:

@click="addToCount(item.contactID, $event)"
Run Code Online (Sandbox Code Playgroud)


Bri*_*laz 74

当您使用Vue指令时,表达式将在Vue的上下文中进行计算,因此您无需将内容包装起来{}.

@click只是v-on:click指令的简写所以适用相同的规则.

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

  • 如果我想传递的参数不是通过迭代和可键控而是硬编码的`&lt;a href="#" @click="switchRoom" class="rooms"&gt;Interview Room&lt;/a&gt; &lt;a href= "#" @click="switchRoom" class="rooms"&gt;绿色房间&lt;/a&gt; &lt;a href="#" @click="switchRoom" class="rooms"&gt;巴伐利亚鱼子酱房间&lt;/a&gt; &lt;a href ="#" @click="switchRoom" class="rooms"&gt;Sky Room&lt;/a&gt;` 并且我想在 switchRoom 方法中使用 a 元素的文本内容? (2认同)
  • @AkinHwan如果已经硬编码,只需将文本作为参数发送`@click =“switchRoom('Sky Room')”` (2认同)