vue项目使用wangeditor并自定义菜单 vue技术交流群(864583465)

vue项目使用wangeditor并自定义菜单 vue技术交流群(864583465)

1、安装wangeditor

npm install wangeditor --save  
或
cnpm install wangeditor --save  

2、文件名.vue

<template>
  <div class="hello">
    <div id="editor"></div>
  </div>
</template>

<script>
  import E from 'wangeditor'
export default {
  data () {
    return {
      editor: null
    }
  },
  mounted(){
    this.createEditor()
  },
  methods:{
    createEditor(){
      this.editor = new E('#editor')
      this.editor.create()
    },
  },
}
</script>

3、步骤2说明

  1. 建议将编辑器封装成一个组件,便于调用
  2. 编辑器相关配置请参考官网文档https://doc.wangeditor.com/

**

自定义菜单,参考官方文档快速扩展一个菜单

**
4、创建AlertMenu.js文件

import E from 'wangeditor' // npm 安装
const { $, BtnMenu, DropListMenu, PanelMenu, DropList, Panel, Tooltip } = E
var _this = null
export  default class AlertMenu extends BtnMenu {
  constructor(editor) {
    // data-title属性表示当鼠标悬停在该按钮上时提示该按钮的功能简述
    _this = editor
    const $elem = E.$(
      `<div class="w-e-menu" data-title="Alert">
                <button>alert</button>
            </div>`
    )
    super($elem, editor)
  }
  // 菜单点击事件
  clickHandler() {
    // 做任何你想做的事情
    // 可参考【常用 API】文档,来操作编辑器
    let selectionText = _this.selection.getSelectionText()
    let SelectionContainerElem  = _this.selection.getSelectionEndElem().elems[0]
    console.log(SelectionContainerElem)

    _this.cmd.do('fontSize', '36px')
    // _this.cmd.do('insertHTML', '<h1>selectionText</h1>')

  }
  // 菜单是否被激活(如果不需要,这个函数可以空着)
  // 1. 激活是什么?光标放在一段加粗、下划线的文本时,菜单栏里的 B 和 U 被激活,如下图
  // 2. 什么时候执行这个函数?每次编辑器区域的选区变化(如鼠标操作、键盘操作等),都会触发各个菜单的 tryChangeActive 函数,重新计算菜单的激活状态
  tryChangeActive() {
    // 激活菜单
    // 1. 菜单 DOM 节点会增加一个 .w-e-active 的 css class
    // 2. this.this.isActive === true
    this.active()

    // // 取消激活菜单
    // // 1. 菜单 DOM 节点会删掉 .w-e-active
    // // 2. this.this.isActive === false
    // this.unActive()
  }
}

5、vue文件中引入

<template>
  <div class="hello">
    <div id="editor"></div>
  </div>
</template>

<script>
  import E from 'wangeditor'
  import AlertMenu from './AlertMenu'  // 根据AlertMenu.js文件实际路径进行引入即可
export default {
  data () {
    return {
      editor: null
    }
  },
  mounted(){
    this.createEditor()
  },
  methods:{
    createEditor(){
      this.editor = new E('#editor')
      this.editor.menus.extend('alertMenu', AlertMenu)  // 配置扩展的菜单
      this.editor.config.menus = this.editor.config.menus.concat('alertMenu')
      this.editor.create()
    },
  },
}
</script>

PS:欢迎加入vue技术交流群(864583465)进行更多问题的探讨,你的问题将是我们大家共同进步的关键

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值