1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vue v-html事件失效?自定义指令有何不可

vue v-html事件失效?自定义指令有何不可

时间:2022-05-02 16:50:26

相关推荐

vue v-html事件失效?自定义指令有何不可

img标签中可以使用 @error 事件去处理图片地址,显示一些默认图片或者做一些其他的事情

<img src="https://p./t0199397a4f9c5e1b3b3.jpg" @error="(e)=>{ e.srcElement.src='https://p./t0199397a4f9c5e1b3b.jpg'}">

vue 使用 v-html 来解析 img标签 @error 失效不起作用 ╮(╯﹏╰)╭

v-html 底层是 innerHTML 而 innerHTML 以文本形式插入,不识别事件的

<template><div class="demo"><div v-html="html"></div></div></template>export default {data() {return {html: '<img src=\"https://p./t0199397a4f9c5e1b3b3.jpg\" @error=\"(e)=>{ e.srcElement.src=\'https://p./t0199397a4f9c5e1b3b.jpg\'}\">',}}}

难道就要止步于此?? 额付考死闹特。我不使用 v-html 不是就不会出现这个问题了嘛.

Vue.directive('test', {bind: function (el, binding) {var MyComponent = Vue.extend({template: '<div>' + binding.value + '</div>',});el.appendChild(new MyComponent().$mount().$el)},update: function (el, binding) {var MyComponent = Vue.extend({template: '<div>' + binding.value + '</div>',});el.innerHTML = "";el.appendChild(new MyComponent().$mount().$el)}})

<template><div class="demo"><div v-html="html"></div>***************************************<div v-test="html"></div></div></template>export default {data() {return {html: '<img src=\"https://p./t0199397a4f9c5e1b3b3.jpg\" @error=\"(e)=>{ e.srcElement.src=\'https://p./t0199397a4f9c5e1b3b.jpg\'}\">',}}}

其余的都可以这样搞 比如@click 这种乱七八糟的事件,下面是完整代码

<template><div class="demo"><div v-html="html"></div>***************************************<div v-test="html"></div></div></template><script>import Vue from 'vue';// const htp = "<p><img src=\"https://p./t0199397a4f9c5e1b3b3.jpg\" @error=\"(e)=>{ e.srcElement.src='https://p./t0199397a4f9c5e1b3b.jpg'}\"><br/></p>";Vue.directive('test', {bind: function (el, binding) {var MyComponent = Vue.extend({template: '<div>' + binding.value + '</div>',});el.appendChild(new MyComponent().$mount().$el)},update: function (el, binding) {var MyComponent = Vue.extend({template: '<div>' + binding.value + '</div>',});el.innerHTML = "";el.appendChild(new MyComponent().$mount().$el)}})export default {name: "HelloWorld",data() {return {html: "<img src=\"https://p./t0199397a4f9c5e1b3b3.jpg\" @error=\"(e)=>{ e.srcElement.src='https://p./t0199397a4f9c5e1b3b.jpg'}\">",}},}</script>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。