对话框内嵌Tinymce富文本插件再次打开数据不变且不可编辑

问题描述

vue-element-admin使用Tinymce富文本插件,内嵌于 el-dialog 再次打开数据不变且不可编辑

由于富文本不适合双向数据流,所以只会 watch 传入富文本的内容一次变化,之后传入内容的变化就不会再监听了,如果之后还有改变富文本内容的需求。
可以通过 this.refs.xxx.setContent() 手动来设置。

上面为 vue-element-admin 官方文档中的解释
实际使用先打印 this.refs.xxx 视打印结果来看是具体用法,下面代码打印出来显示是一维数组,故 this.$refs.editor[0] 。

原因是因为弹窗是父组件,富文本是子组件,弹窗关闭的时候子组件没有触发销毁钩子函数,既然没有销毁,那么第二次打开弹窗的时候也就不会再次初始化,所以父组件的弹窗每次打开关闭、打开关闭,显示都是第一次的富文本内容。

解决方案:

根据以上内容可得出解决的办法就是在弹窗关闭的同时将富文本销毁,这样每次打开编辑弹窗时富文本都是新的

// html vue2 新增/修改对话框
<el-dialog :title="title" :visible.sync="openShow"  width="800px" @opened="handOpened">
   <tinymce ref="editor" v-model="form.content" :height="300" v-if="openShow" />

   <div slot="footer" class="dialog-footer">
     <el-button @click="cancel">取 消</el-button>
   </div>
</el-dialog>

// script
handOpened() {
  this.title == '新增' && (this.$refs.editor[0].setContent(""))
  this.title == '修改' && (this.$refs.editor[0].setContent(this.form.content))
},
cancel() {
  this.openShow = false
}

感谢文章

https://blog.csdn.net/qq_36069339/article/details/107666532
ps:我找了那么久的方法终于找到了这篇,非常非常感谢这个文章的作者(呜呜呜),一定要记住记住记住!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值