VUE2解决 v-html不能触发点击事件不生效问题
时间: 2023-06-13 17:07:44 浏览: 154
在Vue2中,使用v-html渲染的HTML代码是不会被Vue实例所监听的,因此也就无法触发Vue实例中绑定的点击事件。不过,我们可以通过自定义指令来解决这个问题。
首先,在Vue实例中注册一个自定义指令,用来监听v-html渲染的HTML元素的点击事件:
```js
Vue.directive('html-click', {
bind: function (el, binding, vnode) {
el.addEventListener('click', function () {
binding.value(vnode.context)
})
}
})
```
然后,在需要渲染HTML代码的地方,使用v-html指令,并在HTML元素上绑定刚才注册的自定义指令:
```html
<div v-html="htmlCode" v-html-click="handleClick"></div>
```
最后,在Vue实例中定义handleClick方法来处理点击事件:
```js
methods: {
handleClick: function (context) {
// 处理点击事件
}
}
```
这样就可以解决v-html无法触发点击事件的问题了。当用户点击渲染出来的HTML元素时,会触发自定义指令中绑定的点击事件,从而执行Vue实例中定义的handleClick方法。
阅读全文