2017-08-29 95 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