wangEditor自定义扩展菜单-多次缩进(Vue2)

本文介绍了如何在Vue2项目中使用wangEditor自定义扩展菜单,以实现多次缩进功能。首先,通过封装editor组件遵循wangEditor的手册。接着,详细阐述了扩展自定义菜单的三个步骤:定义菜单类、注册菜单到wangEditor以及将菜单插入到工具栏。最后,提供了关键代码示例,并指出缩进效果的逻辑实现。
摘要由CSDN通过智能技术生成


wangEditor自定义扩展菜单

在图文发布类的系统中,经常有对应的管理后台来提供给用户上传文章内容。一般都是提供富文本框给用户编辑,我这里使用的是开源的富文本框编辑器-wangEditor,使用过程中发现wangEditor5.0以上的版本不支持多次缩进,即只能点击一次缩进,这样不能满足用户的使用需求,于是基于vue2的版本,查看它的使用教程结合其他一些文章的回答,扩展了一个自己的菜单,支持多次缩进。


一、封装editor组件

基于wangeditor提供的手册,封装editor组件

<template>
  <div class="ed">
    <div class="myEditor">
      <Toolbar class="tools" style="border-bottom: 1px solid #ccc;min-height: 40px;" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" />
      <Editor style="height:500px" v-model="html" :defaultConfig="editorConfig" :mode="mode" @onCreated="onCreated" @onChange="onChange" />

      <span class="wordNumber" v-if="changedMaxLen">{
   {
    TiLength }}/5000</span>
      <span class="wordNumber" v-else>{
   {
    TiLength }}/1000</span>
    </div>
    <p v-if="warnShow" class="warnText">
      {
   {
   changedMaxLen?'编辑内容不能超过5000个字!':'编辑内容不能超过1000个字!'}}
    </p>
  </div>

</template>

<script>
import {
    Editor, Toolbar } from '@wangeditor/editor-for-vue'
export default {
   
  name: 'TextEditor',
  components: {
    Editor, Toolbar },
  props: {
   
    contents: {
   
      type: String,
      default: ''
    },
    changeMaxLen: {
   
      type: Boolean,
      default: true
    }

  },
  data() {
   
    return {
   
      editor: '',
      html: '',
      toolbarConfig: {
   },
      editorConfig: {
    placeholder: '请输入内容...' },
      mode: 'default', // or 'simple'
      TiLength: 0,
      warnShow: false,
      changedMaxLen: false,
    }
  },
  watch: {
   
    contents: {
   
      handler(newV) {
   
        if (this.editor) {
   
          this.editor.setHtml(newV)
        }
      }
    },
    changeMaxLen: {
   
      handler(newV) {
   
        this.changedMaxLen = newV === true ? true : false
      },
      immediate: true
    }
  },
  created() {
   
    console.log(this.editor, 'pppp', this.toolbarConfig);
  },
  methods: {
   
    onCreated(editor) {
   
      this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错
      editor.setHtml(this.contents)//把父组件传过来的内容写进当前的editor
      editor.getConfig().MENU_CONF['color'] = {
   
        colors: ['#000', '#333', '#666'],
      }
      editor.getConfig().MENU_CONF['fontFamily'] = {
   
        fontFamilyList: ['微软雅黑']
      }
      let that = this
      //上传图片
      editor.getConfig(that).MENU_CONF['uploadImage'] = {
   
        server: '/camppCmsApi/campp-cms-restapi/api/attachment',
        fieldName: 'multipartFile',
        // 单个文件的最大体积限制
        maxFileSize: 6 * 1024 * 1024, 
        // 最多可上传几个文件,默认为 100
        maxNumberOfFiles: 1,
        // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 []
        allowedFileTypes: ['image/*'],
        meta: {
   
          'Authorization': window.localStorage.getItem("auth_token"),
          'fileType': 'IMG'
        },
        headers: {
   
          'Authorization': 'Bearer ' + window.localStorage.getItem("auth_token"),
        },
        // metaWithUrl: true,
        // 单个文件上传成功之后
        onSuccess(file, res) {
             // JS 语法
        },
        customInsert(res, insertFn) {
   
          let url = res.data.fileUrl && res.data.fileUrl.indexOf('?') > -1 ? res.data.fileUrl.split('?')
Vue3 结合 wangEditor 是一个流行的前端编辑器组合方式。wangEditor 是一款简单易用的 Web 富文本编辑器,它可以很容易地嵌入到 Vue 应用中。如果你需要在 wangEditor扩展自定义菜单项以实现多次缩进的功能,可以按照以下步骤操作: 1. **安装 wangEditor**: 确保你已经将 wangEditor 安装到你的 Vue3 项目中。如果还没有安装,可以使用 npm 或 yarn 进行安装。 2. **初始化编辑器**: 在你的 Vue 组件中创建 wangEditor 实例,并将其挂载到相应的 DOM 元素上。 3. **扩展自定义菜单**: 在编辑器的配置选项中,你可以添加自定义菜单项。你需要使用 `config.onMenuAsked` 事件来动态添加菜单项,并且可以使用 `editor.command` 方法来执行具体的命令。 4. **实现缩进功能**: 为了实现多次缩进,你可能需要创建一个自定义命令,该命令可以使用编辑器的 API 来增加或减少文本的缩进级别。 下面是一个简单的示例代码,展示了如何在 Vue3 中集成 wangEditor扩展自定义菜单实现多次缩进的功能: ```javascript <template> <div> <div ref="editorContainer" style="height: 500px;"></div> <button @click="increaseIndent">增加缩进</button> <button @click="decreaseIndent">减少缩进</button> </div> </template> <script setup> import { ref, onMounted } from 'vue'; import { createEditor } from '@wangeditor/editor'; const editorContainer = ref(null); onMounted(() => { const editor = createEditor({ selector: editorContainer.value, config: { onMenuAsked: (menu) => { // 添加自定义菜单项 menu.addItem({ name: 'increaseIndent', text: '增加缩进', icon: `<i class="iconfont icon-indent">`, // 自定义图标 exec: () => { // 调用自定义命令增加缩进 increaseIndent(); }, }); menu.addItem({ name: 'decreaseIndent', text: '减少缩进', icon: `<i class="iconfont icon-outdent">`, // 自定义图标 exec: () => { // 调用自定义命令减少缩进 decreaseIndent(); }, }); }, }, }); function increaseIndent() { // 实现增加缩进的逻辑 } function decreaseIndent() { // 实现减少缩进的逻辑 } }); </script> <style> /* 样式代码 */ </style> ``` 在上述代码中,你需要具体实现 `increaseIndent` 和 `decreaseIndent` 函数,以便执行增加或减少缩进的逻辑。这通常涉及到编辑器的 API 调用,你可以查阅 wangEditor 的官方文档来获取具体的命令和 API 使用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值