2016-05-01 3 views
7

Mit v-on:click Ich würde gerne eine Variable mit der ID des Div in Vue.JS setzen - wie beziehe ich das?vue.js Referenz Div-ID auf v-on: klicken

<div id="foo" v-on:click="select">...</div> 

<script> 
    new Vue({ 
     el: '#app', 
     data: { 
     }, 
     methods: { 
      select: function(){ 
       divID = this.id // ?? 
       alert(divID) 
      } 
     } 
    }) 
</script> 

Antwort

12

Sie können Ihre Ereignishandler dem Ereignisobjekt $event verlängern. Das sollte Ihre Bedürfnisse anzupassen:

<div id="foo" v-on:click="select($event)">...</div> 

Die Veranstaltung wird in Javascript weitergegeben:

methods: { 
    select: function(event) { 
     targetId = event.currentTarget.id; 
     console.log(targetId); // returns 'foo' 
    } 
} 

Wie in den Kommentaren erwähnt, ist $event nicht unbedingt erforderlich, wenn nur dieses Argument verwenden. Persönlich bevorzuge ich es explizit zu schreiben, wenn ich seinen Wert in der Methode verwende, die ich anrufe.

jedoch niemand wird Sie stoppen die kurze Schreibweise vom Schreiben:

<div id="foo" @click="select">...</div> 
+1

Dank. Es scheint, dass Sie in der v-on-Anweisung kein '($ event)' angeben müssen und es funktioniert weiterhin. –

+1

"event.currentTarget" wird in den VueJS-Dokumenten nicht erwähnt - Woher kommt diese Information? So kann ich andere Funktionen finden! –

+0

Während das stimmt, würde ich davon abraten. Der Grund dafür (neben der expliziten Angabe): Sie können eine beliebige Anzahl von Parametern übergeben und das Verhalten würde für andere Signaturen brechen: 'select (number, event)' – nirazul