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 相关文章推荐
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
Javascript中的数据类型之旅
Oct 18 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
Angularjs为ng-click事件传递参数
Jun 15 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
AngularJS实现controller控制器间共享数据的方法示例
Oct 30 Javascript
ReactNative实现Toast的示例
Dec 31 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 Javascript
JS自定义右键菜单实现代码解析
Jul 16 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
Sep 25 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python ZipFile模块详解
2013/11/01 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python微信库:itchat的用法详解
2017/08/14 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python爬虫 正则表达式解析
2019/09/28 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
团支书的期末学习总结自我评价
2013/11/01 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers