vue中如何创建多个ueditor实例教程


Posted in Javascript onNovember 14, 2017

前言

前一段时间公司Vue.js项目需要使用UEditor富文本编辑器,在百度上搜索一圈没有发现详细的说明,决定自己尝试,忙活了一天终于搞定了。

具体可以参考这篇文章:https://3water.com/article/118413.htm

ueditor是百度编辑器,官网地址:http://ueditor.baidu.com/website/

完整的功能演示,可以参考:http://ueditor.baidu.com/website/onlinedemo.html

最近工作中要求升级,需要在vue中创建多个ueditor实例,我使用neditor,其实就是把ueditor样式美化了下,其他和ueditor几乎一样,下面话不多说了,来一起看看详细的介绍吧。

截图

vue中如何创建多个ueditor实例教程

说明

下载ueditor或neditor源码,拷贝到static目录下面

vue中如何创建多个ueditor实例教程

然后修改ueditor.config.js配置文件

vue中如何创建多个ueditor实例教程

在vue项目的main.js添加ueditor引用

vue中如何创建多个ueditor实例教程

新建3个页面 home,tab1,tab2。tab1和tab2是home下面的子页面

vue中如何创建多个ueditor实例教程

在router-view外面一定要添加keep-alive组件和transition组件,不然ueditor实例无法保存

在components文件夹下面新建一个editor作为编辑器的公共组件

在tab1中调用editor,同时要传入一个id并在editor页面接受,注意如果需要多个实例,id一定不能相同

<template>
 <div>
 <editor ref="editor" id="tab1Editor"></editor>
 <button @click="getContent" class="m-t-10">获取内容</button>
 <div>
 <span>当前富文本编辑器内容是: {{content}}</span>
 </div>
 </div>
 </template>

 <script>
 import Editor from '@/components/editor'
 export default {
 name: 'tab1',
 components: { Editor },
 data() {
 return {
 content:''
 }
 },
 methods: {
 //获取内容
 getContent(){
 this.content = this.$refs.editor.content
 }
 }
 }
 </script>

 <style scoped>
 .m-t-10{
 margin-top: 10px;
 }
 </style>

editor页面代码,因为我们在router-view套用了keep-alive,所以ueditor的初始化一定要放在activated里面,
确保每次进入页面都会重新渲染ueditor,在deactivated里面调用ueditor的destroy方法,确保每次离开页面的时候
会销毁编辑器实例,这样就可以渲染多个ueditor实例了,并且每次切换都能保存编辑器的内容。

如果多个tab只需要一个实例请调用reset()方法

<template>
 <div>
 <div :id="this.id"></div>
 </div>
 </template>

 <script>
 export default {
 name: 'editor',
 props: ['id'],
 data() {
 return {
 ue: '', //ueditor实例
 content: '', //编辑器内容
 }
 },
 methods: {
 //初始化编辑器
 initEditor() {
 this.ue = UE.getEditor(this.id, {
 initialFrameWidth: '100%',
 initialFrameHeight: '350',
 scaleEnabled: true
 })
 //编辑器准备就绪后会触发该事件
 this.ue.addListener('ready',()=>{
 //设置可以编辑
 this.ue.setEnabled()
 })
 //编辑器内容修改时
 this.selectionchange()
 },
 //编辑器内容修改时
 selectionchange() {
 this.ue.addListener('selectionchange', () => {
 this.content = this.ue.getContent()
 })
 }
 },
 activated() {
 //初始化编辑器
 this.initEditor()
 },
 deactivated() {
 //销毁编辑器实例,使用textarea代替
 this.ue.destroy()
 //重置编辑器,可用来做多个tab使用同一个编辑器实例
 //如果要使用同一个实例,请注释destroy()方法
 //this.ue.reset()
 }
 }
 </script>

源码地址

github:https://github.com/oblivioussing/vue-ueditor-multi

本地下载:http://xiazai.3water.com/201711/yuanma/vue-ueditor-multi(3water.com).rar

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
QQ邮箱的一个文本编辑器代码
Mar 14 Javascript
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
Angular实现svg和png图片下载实现
May 05 Javascript
小程序Request的另类用法详解
Aug 09 Javascript
vue-cli3跨域配置的简单方法
Sep 06 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 Javascript
vue实现登录拦截
Jun 29 Javascript
js实现简单的倒计时
Jan 28 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 #Javascript
Node之简单的前后端交互(实例讲解)
Nov 14 #Javascript
Angular移动端页面input无法输入的解决方法
Nov 14 #Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 #Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 #Javascript
js实现数组内数据的上移和下移的实例
Nov 14 #Javascript
vue router使用query和params传参的使用和区别
Nov 13 #Javascript
You might like
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
浅谈PHP中的
2016/04/23 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python组合无重复三位数的实例
2018/11/13 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
车间安全生产标语
2014/06/06 职场文书
志愿服务心得体会
2016/01/15 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL