ความแตกต่างระหว่าง @click และ v-on: คลิก Vuejs


160

คำถามควรชัดเจนพอ :) แต่ฉันเห็นว่ามีคนใช้:

<button @click="function()">press</button>

มีคนใช้:

<button v-on:click="function()">press</button>

แต่จริงๆแล้วอะไรคือความแตกต่างระหว่างสอง (ถ้ามี)

คำตอบ:


189

ไม่มีความแตกต่างระหว่างสองอย่างใดอย่างหนึ่งเป็นเพียงการจดชวเลขสำหรับที่สอง

คำนำหน้า v ทำหน้าที่เป็นคิวภาพสำหรับการระบุคุณลักษณะเฉพาะของ Vue ในแม่แบบของคุณ สิ่งนี้มีประโยชน์เมื่อคุณใช้ Vue.js เพื่อใช้พฤติกรรมแบบไดนามิกกับมาร์กอัปที่มีอยู่บางส่วน แต่สามารถรู้สึกได้ถึงคำสั่งที่ใช้บ่อย ในเวลาเดียวกันความต้องการคำนำหน้า v มีความสำคัญน้อยลงเมื่อคุณสร้าง SPA ที่ Vue.js จัดการทุกเทมเพลต

<!-- full syntax -->
<a v-on:click="doSomething"></a>
<!-- shorthand -->
<a @click="doSomething"></a>

ที่มา: เอกสารอย่างเป็นทางการ


1
มีการตั้งค่าชุมชน Vue ต่อ @ หรือเป็นเพียงการตั้งค่า JetBrains เพื่อบ่นเกี่ยวกับการใช้ v-on?
Kimmo Hintikka

5
@KimmoHintikka ใช่มีการตั้งค่าทางลัด (@) อยู่ กฎรวมอยู่ในstrongly-recommendedและrecommendedตั้งค่าล่วงหน้าของ eslint-plugin-vue github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/…
Cobaltway

63

v-bindและv-onเป็นคำสั่งที่ใช้บ่อยสองคำสั่งใน vuejs html template ดังนั้นพวกเขาจึงให้การจดชวเลขสำหรับทั้งคู่ดังต่อไปนี้:

คุณสามารถแทนที่v-on:ด้วย@

v-on:click='someFunction'

เช่น:

@click='someFunction'

ตัวอย่างอื่น:

v-on:keyup='someKeyUpFunction'

เช่น:

@keyup='someKeyUpFunction'

ในทำนองเดียวกันv-bindด้วย:

v-bind:href='var1'

สามารถเขียนเป็น:

:href='var1'

หวังว่ามันจะช่วย!


@ LorenzoBerti วิธีการเกี่ยวกับคำตอบนี้ มันช่วยให้คุณเข้าใจมากกว่านี้ไหม?
Nitin Kumar

คำตอบไม่ได้อธิบายอะไรเลยเพียงแค่ให้ตัวอย่าง 1/3 ซึ่งไม่สอดคล้องกับคำถามที่ถาม ขอโทษ
Jakub Strebeyko

v-bind และ v-on เป็นคำสั่งที่ใช้บ่อยสองคำสั่งในเทมเพลต vuejs html ดังนั้นพวกเขาจึงให้การจดชวเลขสำหรับทั้งคู่ฉันคิดว่านี่จะอธิบายคำถาม นั่นคือเหตุผลที่ระบุไว้ในเอกสารคิว js เช่นกัน :-)
Nitin Kumar

สิ่งนี้คือคำตอบถูกโพสต์เมื่อ 4 เดือนที่ผ่านมาโดยไม่มีลิงก์ไม่มีการอ้างอิงและการขว้างในเครื่องหมายทวิภาคสำหรับ v-bind ซึ่งสามารถเพิ่มความสับสนได้
Jakub Strebeyko

2

พวกเขาอาจดูแตกต่างจาก HTML ปกติเล็กน้อย แต่: และ @ เป็นตัวอักษรที่ถูกต้องสำหรับชื่อแอตทริบิวต์และเบราว์เซอร์ที่สนับสนุน Vue.js ทั้งหมดสามารถแยกวิเคราะห์ได้อย่างถูกต้อง นอกจากนี้จะไม่ปรากฏในมาร์กอัปที่แสดงครั้งสุดท้าย ไวยากรณ์ชวเลขเป็นทางเลือกโดยสิ้นเชิง แต่คุณอาจจะชอบเมื่อคุณเรียนรู้เพิ่มเติมเกี่ยวกับการใช้งานในภายหลัง

ที่มา: เอกสารอย่างเป็นทางการ

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