วิธีส่งพารามิเตอร์ไปยัง Vue @click event handler


101

ฉันสร้างตารางโดยใช้ 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.contactIDต่อไปยังaddToCount(). มีใครแนะนำไวยากรณ์ที่ถูกต้องสำหรับสิ่งนี้ได้ไหม

คำตอบ:


121

เมื่อคุณใช้คำสั่ง Vue นิพจน์จะได้รับการประเมินในบริบทของ Vue ดังนั้นคุณไม่จำเป็นต้องรวมสิ่งต่างๆเข้า{}ด้วยกัน

@clickเป็นเพียงชวเลขสำหรับv-on:clickคำสั่งดังนั้นจึงใช้กฎเดียวกัน

ในกรณีของคุณให้ใช้ไฟล์ @click="addToCount(item.contactID)"


2
จะเกิดอะไรขึ้นถ้าอาร์กิวเมนต์ที่ฉันต้องการส่งผ่านไม่ได้รับการทำซ้ำและคีย์ได้ แต่เข้ารหัสยากเช่นนี้<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
Akin Hwan

1
@AkinHwan ถ้ารหัสยากอยู่แล้วให้ส่งข้อความเป็นพารามิเตอร์@click="switchRoom('Sky Room')"
Brian Glaz

จะเกิดอะไรขึ้นถ้าอินสแตนซ์ vue ไม่ได้เป็นเจ้าของ ตัวอย่างเช่นคุณต้องการที่จะคลิกผ่านแผนภูมิมากเกินไปและแผนภูมิอยู่ในคำสั่ง vue แต่ไม่ใช่ตัวของ vue คุณจำเป็นต้องเรียกเหตุการณ์การคลิกที่อยู่เบื้องหลังจากฟังก์ชันการคลิกทับ vue หรือไม่?
mathtick

136

เพียงใช้นิพจน์ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.