ueditor在弹出层的使用(vue2+elementui)

326 阅读1分钟

ueditor在弹出层的使用(vue2+elementui+ueditor)

ueditor使用场景

uedior的格式是最像word的,word复制的内容在ueditor中粘贴多数情况格式都是能保留的。如果公司需求需要一个像word的编辑器,可以优先考虑ueditor

本人试过的错(这个是我遇到问题的分析)

弹出层里面直接放入ueditor出现的问题是

  • 在页面挂在的时候不打开弹出层导致的问题:
    • 报错:Uncaught TypeError: Cannot read properties of null (reading 'offsetHeight')
    • 同时打开弹出层编辑器不显示(ueditor应该是网页加载的时候就自动创建的)

解决办法:页面挂在完毕后打开弹出层,dom渲染完毕后关闭弹出层(会出现加载显示弹出层的bug) 解决代码:👇👇👇👇👇

// html中

// 用于解决加载显示弹出层的bug
<el-dialog :class="showDialog?'showDialog':'hideDialog'">
    <div id="container"></div>            
</el-dialog>

// css中

.showDialog {
    visibility: visible;
}

.hideDialog {
   visibility: hidden;

}

// mounted中

// showDialog控制弹出层是否可见
// 用于解决加载显示弹出层的bug
this.showDialog = false
// 用于解决报错和编辑器不出现
this.dialogVisible = true
this.$nextTick(() => {
    this.dialogVisible = false
})

  • 但是这个时候又出现上传图片,添加表格的盒子优先级不够,这个时候不管怎么调盒子z-index都不行。

image.png

于是我就将编辑器放到一个新页面,通过iframe引入

ueditor在弹出层中的使用(正确的写法)

  • 编辑器页面自己编写,很简单,实在不会上网查

解决代码:👇👇👇👇👇

// html中

// 用于解决加载显示弹出层的bug
<el-dialog :class="showDialog?'showDialog':'hideDialog'">
    <iframe src="./addEditRateEditor.html" frameborder="0" id="rateIframe" style="width:100%;height:542px;"></iframe>           
</el-dialog>

// css中

.showDialog {
    visibility: visible;
}

.hideDialog {
   visibility: hidden;

}

// mounted中

// showDialog控制弹出层是否可见
// 用于解决加载显示弹出层的bug
this.showDialog = false
// 用于解决报错和编辑器不出现
this.dialogVisible = true
this.$nextTick(() => {
    this.dialogVisible = false
})

设置获取编辑器的东西就用到iframe父子组件通信,可以直接在掘金搜索

  • 注意:在新增数据的时候先将编辑器内容设为空

这个是本人投机取巧的做法,有更好的方法的可以一起聊