2017-08-29 76 views
0

我正在使用Vue中的@click屬性將事件綁定到元素(它的行爲與javascript .onclick屬性相同)。獲取綁定事件的元素

我遇到的問題是,當通過從子DOM節點傳播來調用事件時單擊事件我得到子DOM元素爲target屬性,我無法找到一種乾淨的方式(無需搜索父母,因爲元素可能嵌套在內部深處)訪問事件在事件回調中註冊的DOM元素。

<td @click="onCellClick($event)"> 
 
    <div class="text"> 
 
    <span>default</span> 
 
    </div> 
 
</td>

+0

嘗試使用'this' –

+0

我得到的Vue的情況下,因爲一個vuejs組件內的,當我用'this' – korun

回答

3

我覺得困惑是與事件的target VS currentTarget

event.target是什麼觸發事件調度員到t rigger和event.currentTarget是您爲偵聽器分配的內容。

Vue.component('cell', { 
    template: '#cell', 
    methods: { 
    onCellClick: function (e) { 
     console.log(e.currentTarget) 
    } 
    } 
}); 
+1

就是這樣,讓我困惑的是當我記錄了事件'currentTarget'爲空。但它在回調中可用,所以它的效果很好。謝謝。 – korun

0

您可以使用refs

<td @click="onCellClick($event)" ref="cell1"> 
    <div class="text"> 
    <span>default</span> 
    </div> 
</td> 

onCellClick(evt){ 
    console.log(this.$refs.cell1) 
} 
+0

我也想到了這一點,但這種使用'v型for'時成爲一個問題爲列表或網格。 – korun

+1

你可以通過使用ref名稱的索引並將索引發送給函數來克服它,然後你可以這樣調用它:this.' $ refs [index]' – Tomer