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 相关文章推荐
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
May 16 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
js实现右键菜单功能
Nov 28 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
AngularJS日期格式化常见操作实例分析
May 17 Javascript
微信小程序实现底部导航
Nov 05 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 Javascript
vue相同路由跳转强制刷新该路由组件操作
Aug 05 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
论建造顺序的重要性
2020/03/04 星际争霸
PHP4实际应用经验篇(9)
2006/10/09 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
2013/06/21 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
js数组去重的常用方法总结
2014/01/24 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python求解平方根的方法
2015/03/11 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
2016年第32个教师节致辞
2015/11/26 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android