Cách chuyển một tham số cho trình xử lý sự kiện Vue @click


94

Tôi đang tạo một bảng bằng Vue.js và tôi muốn xác định một onClicksự kiện cho mỗi hàng trôi qua contactID. Đây là mã:

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

Khi nhấp vào một hàng, nó đang gọi addToCount(), đang hoạt động. Tôi muốn chuyển item.contactIDđến addToCount(). Ai đó có thể đề xuất cú pháp chính xác cho điều này?

Câu trả lời:


114

Khi bạn đang sử dụng chỉ thị Vue, các biểu thức được đánh giá trong ngữ cảnh của Vue, vì vậy bạn không cần phải bao bọc mọi thứ {}.

@clickchỉ là viết tắt của v-on:clickchỉ thị nên các quy tắc tương tự cũng được áp dụng.

Trong trường hợp của bạn, chỉ cần sử dụng @click="addToCount(item.contactID)"


1
Điều gì sẽ xảy ra nếu đối số tôi muốn truyền không được lặp lại và có thể khóa nhưng được mã hóa khá cứng như vậy <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> và tôi muốn sử dụng nội dung văn bản của các phần tử trong phương thức switchRoom?
— Akin Hwan

1
@AkinHwan Nếu nó đã được mã hóa cứng, chỉ cần gửi văn bản như một tham số@click="switchRoom('Sky Room')"
— Brian Glaz

135

Chỉ cần sử dụng một biểu thức Javascript thông thường, không cần {}hoặc bất cứ điều gì cần thiết:

@click="addToCount(item.contactID)"

nếu bạn cũng cần đối tượng sự kiện:

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

0

Tôi đã gặp vấn đề tương tự và đây là cách tôi quản lý để vượt qua:

Trong trường hợp của bạn, bạn có addToCount()mà được gọi là. bây giờ để chuyển xuống một tham số khi người dùng nhấp vào, bạn có thể nói@click="addToCount(item.contactID)"

trong việc triển khai chức năng của mình, bạn có thể nhận được các thông số như:

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!

}

Cảm ơn. Câu trả lời của bạn tương tự như câu trả lời đã được cung cấp bởi @Linus
— user761100
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.