最近在做项目时,客户有个发布新闻动态的功能,具体页面内容让客户自己编写,所以要选择富文本编辑器,这样用户体验好一点。网上有很多的富文本编辑器, 因为项目的功能并不是很复杂,所以选择了wangEditor,界面简洁,使用起来也挺方便的;

image.png

实现思路

1.安装wangEditor

2.封装成组件

3.父组件中直接调用

一、wangEditor安装

这里使用npm命令安装;

npm install wangeditor

二、组件封装

2.1、创建组件

这里我们创建一个名为editor.vue的文件,并导入文件;

import E from "wangeditor"

2.2、初始化wangeditor

(1)我们创建一个初始化方法

(2)编写初始化代码

(3)在mounted()中调用

js代码

initE() {

this.editor = new E('#e')

//这里各位小伙伴可以查询官网,根据自己的需求进行菜单栏调整

this. editor.customConfig.menus = [

'head', // 标题

'bold', // 粗体

'fontSize', // 字号

'fontName', // 字体

'italic', // 斜体

'underline', // 下划线

'strikeThrough', // 删除线

'foreColor', // 文字颜色

'backColor', // 背景颜色

'link', // 插入链接

'list', // 列表

'justify', // 对齐方式

'quote', // 引用

'emoticon', // 表情

'image', // 插入图片

'table', // 表格

'code', // 插入代码

'undo', // 撤销

'redo' // 重复

]

this.editor.create()

},

mounted(){

this.initE()

}

2.3、配置图片上传

this.editor.customConfig.uploadFileName = 'file'

this.editor.customConfig.uploadImgServer = `url` // 你的服务器上传地址

this.editor.customConfig.uploadImgHooks = {

before: function (xhr, editor, files) {

// 图片上传之前触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,files 是选择的图片文件

// 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传

// return {

// prevent: true,

// msg: '放弃上传'

// }

},

success: function (xhr, editor, result) {

// 图片上传并返回结果,图片插入成功之后触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果

},

fail: function (xhr, editor, result) {

// 图片上传并返回结果,但图片插入错误时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果

},

error: function (xhr, editor) {

// 图片上传出错时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象

},

timeout: function (xhr, editor) {

// 图片上传超时时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象

},

// 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置

// (但是,服务器端返回的必须是一个 JSON 格式字符串!!!否则会报错)

customInsert: function (insertImg, result, editor) {

// 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)

// insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果

// 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:

console.log(result.url)

var url = result.url

insertImg(url)

// result 必须是一个 JSON 格式字符串!!!否则报错

}

}

该代码需放置在this.editor = new E('#e') 和 this.editor.create()之间;

2.4、接收wangeditor接收值

this.editor.customConfig.onchange = (html) => {

this.info_ = html // 绑定当前逐渐地值

this.$emit('change', this.info_) // 将内容同步到父组件中

}

2.5、接收父组件传递过来的值

这里我们可以使用props属性指定字段来接收值,并使用model指定字段和事件

model: {

prop: 'desc',

event:'change'

},

props:{

desc:{

type:String,

default:""

},

//业务中我们经常会有添加操作和编辑操作,添加操作时,我们需清除上一操作留下的缓存

isClear:{

type:Boolean,

default:false

}

},

2.6、将父组件传递过来的值传入wangeditor

这里我们需要使用watch来监听值的变化,并进行赋值操作

watch:{

//判断用户是否清除编辑器缓存

isClear(val){

// console.log(val)

if (val){

this.editor.txt.clear()

}

},

//接收父组件传递过来的值

desc(value) {

//console.log("desc",value)

//判断父组件传递过来的值跟当前编辑器内容是否一样

if (value != this.editor.txt.html()) {

this.editor.txt.html(this.desc)

}

}

},

2.7、子组件代码汇总

import Vue from 'vue'

import E from "wangeditor"

export default {

name: 'editor',

data(){

return{

content:"",

editor: null,

info_:null

}

},

model: {

prop: 'desc',

event:'change'

},

watch:{

isClear(val){

// console.log(val)

if (val){

this.editor.txt.clear()

// this.info_=null

}

},

desc(value) {

//console.log("desc",value)

if (value != this.editor.txt.html()) {

this.editor.txt.html(this.desc)

}

}

},

props:{

desc:{

type:String,

default:""

},

//业务中我们经常会有添加操作和编辑操作,添加操作时,我们需清除上一操作留下的缓存

isClear:{

type:Boolean,

default:false

}

},

methods:{

initE(){

this.editor = new E('#e')

this.editor.customConfig.onchangeTimeout = 1000 // 单位 ms

this.editor.customConfig.uploadFileName = 'file'

this.editor.customConfig.uploadImgServer = `url` // 你的服务器地址

this.editor.customConfig.uploadImgHooks = {

before: function (xhr, editor, files) {

// 图片上传之前触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,files 是选择的图片文件

// 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传

// return {

// prevent: true,

// msg: '放弃上传'

// }

},

success: function (xhr, editor, result) {

// 图片上传并返回结果,图片插入成功之后触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果

},

fail: function (xhr, editor, result) {

// 图片上传并返回结果,但图片插入错误时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象,result 是服务器端返回的结果

},

error: function (xhr, editor) {

// 图片上传出错时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象

},

timeout: function (xhr, editor) {

// 图片上传超时时触发

// xhr 是 XMLHttpRequst 对象,editor 是编辑器对象

},

// 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置

// (但是,服务器端返回的必须是一个 JSON 格式字符串!!!否则会报错)

customInsert: function (insertImg, result, editor) {

// 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)

// insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果

// 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:

console.log(result.url)

var url = result.url

insertImg(url)

// result 必须是一个 JSON 格式字符串!!!否则报错

}

}

this.editor.customConfig.onchange = (html) => {

this.info_ = html // 绑定当前逐渐地值

this.$emit('change', this.info_) // 将内容同步到父组件中

}

this. editor.customConfig.menus = [

'head', // 标题

'bold', // 粗体

'fontSize', // 字号

'fontName', // 字体

'italic', // 斜体

'underline', // 下划线

'strikeThrough', // 删除线

'foreColor', // 文字颜色

'backColor', // 背景颜色

'link', // 插入链接

'list', // 列表

'justify', // 对齐方式

'quote', // 引用

'emoticon', // 表情

'image', // 插入图片

'table', // 表格

'code', // 插入代码

'undo', // 撤销

'redo' // 重复

]

this.editor.create()

// this.editor.txt.html(this.desc)

// this.editor.txt.html(this.desc)

}

},

mounted () {

this.initE();

}

}

三、父组件中进行调用

3.1、创建父组件,这里我们创建文件add-or-update.vue文件

(1)导入子组件

(2)在comonents中创建组件

(3)使用组件

import editor from './editor'

components: {

EDITOR: editor,

}

3.2、代码汇总

import editor from './editor'

export default {

components: {

EDITOR: editor

},

data () {

return {

content:"",

isClear: false//清除富文本编辑器内容

}

}

},

methods: {

}

}

富文本编辑器完成,快去撸起你代码~

wangeditor html编辑,Vue整合wangEditor富文本编辑器相关推荐

  1. vue 是否有word编辑控件_GitHub - C84882428/editor-ui: vue集成 tinymce 富文本编辑器,增加导入 word 模板...

    editor-ui vue 集成 tinymce 富文本编辑器 自定义 tinymce 富文本编辑器, 在原来的编辑器中增加上传 word 模板 最终展示效果: 主要代码: 整体思路: 1,在编辑器原 ...

  2. vue使用百度富文本编辑器(ueditor)

    文章目录 vue使用百度富文本编辑器(ueditor) 1.进入官网或者github下载源码 2.使用grunt编译 4.安装`vue-ueditor-wrap` 5.组件中引入,自定义组件 6.后端 ...

  3. avue form提交变为不可编辑_教程42——富文本编辑器的原理(项目)

    完整版项目的代码链接: https://github.com/lyandzao/note/tree/master/react/react-tuts/react-admin/src​github.com ...

  4. vue移动端富文本编辑器vue-html5-editor

    简介 Intro Vue-html5-editor是一个Vue的富文本编辑器插件,简洁灵活可扩展,适用于vue2.0以上版本,支持IE11. Vue-html5-editor is an html5 ...

  5. vue项目 vue-quill-editor富文本编辑器+图片上传

    目录 基础使用: 进阶版: 使用 el-upload 图片上传: 进阶版2.0: 可拖动调整图片大小: 基础使用: 富文本编辑器: 此方法得到的图片为base64编码,图片上传在下面. npm ins ...

  6. vue结合ueditor富文本编辑器(换肤分离)

    需求 (PC端)做一个可以使用图片上传.视频上传.文件上传功能的富文本组件,简单的文本编辑发布功能,采用socket方式传输, 做法 当时看到这个需求,我觉得是不难的,就去github上找富文本编辑器 ...

  7. themyleaf 图片上传_springboot thymeleaf 整合 百度富文本编辑器UEditor进行图片上传

    项目中需要使用到富文本编辑器,找来找去发现百度UEditor富文本编辑器在国内最为常用因此就尝试引入.编辑器官网是:http://ueditor.baidu.com/website/index.htm ...

  8. VUE+tinymce(富文本编辑器)

    效果图: VUE项目引入tinymce 1.tinymce安装以及下载 npm install @tinymce/tinymce-vue -save npm install tinymce -save ...

  9. vue使用ckeditor4富文本编辑器配置

    使用场景: 本来最开始使用的是quill富文本编辑器,但是由于功能和项目得实际需求并不是怎么适合,因为我需要在Word文档里面把一些内容进行粘贴复制进去(复制的是图文),当出现这种场景的话quill就 ...

最新文章

  1. java action dao_java中Action层、Service层和Dao层的功能区分
  2. 如何使用MERGE(合并)SQL
  3. oracle if=,oracle中if/else的三种实现方式详解
  4. UIView-Maker,实现UIView的clone操作和统一样式模型
  5. UA MATH567 高维统计专题1 稀疏信号及其恢复4 Basis Pursuit的算法 Projected Gradient Descent
  6. 006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories
  7. [css] 一个页面引用多个文件,如何防止样式冲突?
  8. JAVA物体运动检测_基于OpenCv的运动物体检测算法
  9. centos 6.8 挂载NTFS移动硬盘
  10. 两大方案,只为写出更安全的代码!
  11. yum客户端的配置文件的格式
  12. Linux内核网络UDP数据包发送(四)——Linux netdevice 子系统
  13. xiuno开发文档_$ip-XiunoPHP 4.0 开发手册
  14. 分部积分出现积回去的情况
  15. Python单元测试详解
  16. chrome浏览器 快捷键设置
  17. 南通大学计算机学院本科考研,2017年南通大学计算机科学与技术学院919C考研题库...
  18. 下一代威胁感知系统的设计构想
  19. 2022年最强软件测试教程大汇总:测试基础+自动化测试进阶自学教程
  20. [ github ] 使用GitHub

热门文章

  1. 关于jedis2.4以上版本的连接池配置,及工具类
  2. 移动端Web开发如何处理横竖屏
  3. 简单排序算法设计(Java)
  4. C++中的结构体函数
  5. Command 传参的几种方式
  6. 编写数学公式的好工具
  7. 安全和连接是IoT联网设备2大挑战
  8. 帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载
  9. mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法...
  10. 读书笔记2014第13本:《富爸爸,穷爸爸》