编辑器组件

本文介绍了如何在Vue项目中使用Wangeditor编辑器,包括自定义工具栏、异步加载内容、上传图片功能的配置,以及组件销毁时的正确销毁方法。
摘要由CSDN通过智能技术生成
<script setup>
import '@wangeditor/editor/dist/css/style.css' // 引入 css

import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'

// 定义模式
const mode = 'default'// 或 'simple'
// 编辑器实例,必须用 shallowRef
const editorRef = shallowRef()

// 内容 HTML
const valueHtml = ref()

// 模拟 ajax 异步获取内容
onMounted(() => {
    // setTimeout(() => {
    //     valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>'
    // }, 1500)
})
// 自定义工具栏
const toolbarConfig = {
    //    toolbarKeys: [
    //     "headerSelect",  //正文
    //     "|", //分隔线
    //     "blockquote", //引号
    //     "|", //分隔线
    //     "bold",  //加粗
    //     "|", //分隔线
    //     "underline",  //下划线
    //     "|", //分隔线
    
    //  ]
}
// 初始化默认配置
const editorConfig = {
     placeholder: '请输入内容...' ,
     MENU_CONF: {}
    }
    editorConfig.MENU_CONF['uploadImage'] = {
        // 接口地址
    server:'/api/upload',
    // 上传名字和后端upload接口的file字段对应
    fieldName: 'file',
    headers: {
        Authorization: 'Bearer ' + sessionStorage.getItem("token"),
    },
    // 上传之前触发
    onBeforeUpload(file) { // TS 语法
        // onBeforeUpload(file) {    // JS 语法
        // file 选中的文件,格式如 { key: file }
        return file
        // 可以 return
        // 1. return file 或者 new 一个 file ,接下来将上传
        // 2. return false ,不上传这个 file
    },
    // 上传进度的回调函数
    onProgress(progress) {  // TS 语法
        // onProgress(progress) {       // JS 语法
        // progress 是 0-100 的数字
        console.log('progress', progress)
    },
    // 自定义插入图片
    customInsert(res, insertFn) {  // TS 语法
        // customInsert(res, insertFn) {                  // JS 语法
        // res 即服务端的返回结果
        let { url } = res
        // 从 res 中找到 url alt href ,然后插入图片
        insertFn(url)
    }
}
// 组件销毁时,也及时销毁编辑器
onBeforeUnmount(() => {
    const editor = editorRef.value
    if (editor == null) return
    editor.destroy()
})
// 用来处理逻辑
const handleCreated = (editor) => {
    editorRef.value = editor // 记录 editor 实例,重要!
    //   工具栏设置在menu-con
    console.log(editor.getConfig());
}





</script>   

<template>
    <div class="">
        <div style="border: 1px solid #ccc">
            <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig"
                :mode="mode" />
            <Editor style="height: 500px; 
            overflow-y: hidden;" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode"
                @onCreated="handleCreated" />
        </div>
    </div>
</template>
<style lang="scss" scoped></style>

哪用放到那个组件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值