【前端】VUE3引用 wangeditor ^4.7.15富文本

安装:

cnpm i wangeditor@4.7.15   -S

components文件夹下新建一个Vue组件:

<template>
    <div>
        <div id="websiteEditorElem" style="height:300px;background: #ffffff;"></div>
    </div>
</template>
 
<script>
 import { getToken } from "@/utils/auth";
import EWangEditor from "wangeditor";
const baseUrl = import.meta.env.VITE_APP_BASE_API;
const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址

export default {
    name: "wangEditor",
    props: {
        content: "" //获取从父组件中传过来的值,主要用于修改的时候获取值,并加入到富文本框中
    },
    data() {
        return {
            phoneEditor: '',
            name: '',
        }
    },
    methods: {
 
    },
    mounted() {
            this.phoneEditor = new EWangEditor('#websiteEditorElem')
            // true 文件采用base64保存  false:文件采用地址方式保存
            const b = false;
            // 图片以base64形式保存
            this.phoneEditor.config.debug = true;
            if (b) {
                this.phoneEditor.config.uploadImgShowBase64 = true
            }else{
                // 配置上传图片功能
                this.phoneEditor.config.uploadImgServer = uploadFileUrl.value //填写后台服务器地址
                this.phoneEditor.config.uploadFileName = 'file' // 后端接受上传文件的参数名
                this.phoneEditor.config.uploadImgMaxSize = 30 * 1024 * 1024 // 限制上传图片的大小为3MB
                this.phoneEditor.config.uploadImgMaxLength = 600 // 限制一次最多上传 6 张图片
                this.phoneEditor.config.uploadImgTimeout = 40 * 60 * 1000 // 设置超时时间
                this.phoneEditor.config.uploadImgParams = {file_type: 'img'}
                this.phoneEditor.config.uploadImgHeaders = {Authorization: "Bearer " + getToken()}
                this.phoneEditor.config.uploadImgHooks = {
                    customInsert: function (insertImg, result, editor) {
                        if (result.code === 200) {
                        // 插入图片到编辑器中
                        insertImg(baseUrl+result.fileName) 
                        } else {
                            console.error('上传图片失败')
                        }
                    }
                }
            }
            this.phoneEditor.config.zIndex = 100;
            this.phoneEditor.config.pasteFilterStyle = false;
            // 创建一个富文本编辑器
            this.phoneEditor.create()
            // 修改的时候,需要富文本内容回显,则需要加入以下代码
            this.phoneEditor.txt.html(this.modelValue)
            this.phoneEditor.config.onchange = (html) => {
                this.info_ = html // 绑定当前逐渐地值
                this.$emit('change', this.info_) // 将内容同步到父组件中
            }
    },
}
</script>

父组件引用:

页面:
 <el-form-item label="内容">
          <WangEdit @change="grtUrl" :content="editForm.content"></WangEdit>
 </el-form-item>
JS:
<script>
import WangEdit from '@/components/wangEditor.vue' //WangEditor在项目中的地址
export default{
    components:{ WangEdit },
    data(){
        return{
            editForm:{content:''},
         }
    }methods:{
        grtUrl(path){
            this.editForm.content = path;
        },
        saveOrUpdate(){
            console.log('send',this.editForm)
            //注释掉的这行代码就是控制页面显示是否带<p>标签的
            //this.editForm.content=this.editForm.content.replace(/<[^>]+>/g,"")
            //todo  以下可进行后端接口保存调用...
        },
    }
}
</script>

尾声:

有问题可看视频教学 官方网站

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下使用Vue3封装WangEditor富文本组件的步骤。 首先,我们需要安装WangEditorVue3,可以通过以下命令进行安装: ```bash npm install wangeditor@latest npm install vue@next ``` 接着,我们可以在Vue3的组件中使用WangEditor。下面是一个简单的示例: ```vue <template> <div ref="editorElem"></div> </template> <script> import WangEditor from 'wangeditor' export default { mounted() { const editor = new WangEditor(this.$refs.editorElem) editor.create() } } </script> ``` 在上面的代码中,我们通过import导入了WangEditor,并在mounted钩子函数中创建了一个新的编辑器实例。注意,我们需要在组件的模板中添加一个ref属性,用于引用编辑器的DOM元素。 如果您需要进一步封装WangEditor组件,可以考虑将其封装为一个Vue组件,以便在其他地方重复使用。下面是一个简单的示例: ```vue <template> <div :id="editorId"></div> </template> <script> import WangEditor from 'wangeditor' export default { props: { value: String, placeholder: String, height: { type: String, default: '300px' } }, data() { return { editorId: `editor-${Math.random().toString(36).substr(2, 9)}`, editor: null } }, mounted() { this.editor = new WangEditor(`#${this.editorId}`) this.editor.config.height = this.height this.editor.config.placeholder = this.placeholder this.editor.config.onchange = this.handleChange this.editor.create() this.editor.txt.html(this.value) }, methods: { handleChange() { this.$emit('input', this.editor.txt.html()) } }, beforeUnmount() { this.editor.destroy() } } </script> ``` 在上面的代码中,我们定义了一个WangEditor组件,并通过props接收了一些参数,包括组件的初始值、占位符和高度等。在mounted钩子函数中,我们创建了一个新的编辑器实例,并通过config属性设置了一些编辑器的配置项,包括高度、占位符和内容变化时的回调函数等。我们还通过handleChange方法监听了编辑器内容的变化,并通过$emit方法向父组件发送了一个input事件,以便在父组件中更新组件的绑定值。最后,我们在beforeUnmount钩子函数中销毁了编辑器实例,以避免内存泄漏。 使用时,您可以像使用其他自定义组件一样,在Vue3的模板中引用WangEditor组件,并通过v-model指令绑定组件的值: ```vue <template> <div> <wangeditor v-model="content" placeholder="请输入内容" height="500px" /> <div>{{ content }}</div> </div> </template> <script> import WangEditor from '@/components/WangEditor.vue' export default { components: { WangEditor }, data() { return { content: '' } } } </script> ``` 在上面的代码中,我们通过import导入了WangEditor组件,并在模板中引用了该组件。我们还通过v-model指令绑定了组件的值,以便在父组件中获取和更新该值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值