2016-05-01 19 views
7

Sử dụng v-on:click Tôi muốn đặt biến có id của div trong Vue.JS - làm cách nào để tôi tham chiếu điều này?id div tham chiếu vue.js trên v-on: nhấp vào

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

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

Trả lời

12

Bạn có thể mở rộng trình xử lý sự kiện của mình với đối tượng sự kiện $event. Điều đó sẽ phù hợp với nhu cầu của bạn:

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

Sự kiện này được truyền lại trong javascript:

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

Như đã đề cập trong các ý kiến, $event không đúng cần thiết, khi sử dụng chỉ lập luận này. Cá nhân tôi thích viết nó một cách rõ ràng, khi tôi đang sử dụng giá trị của nó trong phương pháp tôi gọi.

Tuy nhiên, không ai sẽ ngăn chặn bạn viết các ký hiệu ngắn:

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

Cảm ơn. có vẻ như bạn không cần phải bao gồm '($ event)' trong câu lệnh v-on và nó vẫn hoạt động. –

+1

'event.currentTarget' không được đề cập trong tài liệu VueJS - thông tin này từ đâu? Hỏi tôi có thể tìm các chức năng khác! –

+0

Trong khi điều này là chính xác, tôi sẽ khuyên bạn nên chống lại nó. Lý do đằng sau điều này (ngoài việc làm cho nó rõ ràng): Bạn có thể truyền bất kỳ số tham số nào và hành vi sẽ phá vỡ các chữ ký khác như: 'select (number, event)' – nirazul

Các vấn đề liên quan