vue中如何創(chuàng)建多個(gè)ueditor實(shí)例教程
前言
前一段時(shí)間公司Vue.js項(xiàng)目需要使用UEditor富文本編輯器,在百度上搜索一圈沒有發(fā)現(xiàn)詳細(xì)的說明,決定自己嘗試,忙活了一天終于搞定了。
具體可以參考這篇文章:http://m.fzitv.net/article/118413.htm
ueditor是百度編輯器,官網(wǎng)地址:http://ueditor.baidu.com/website/
完整的功能演示,可以參考:http://ueditor.baidu.com/website/onlinedemo.html
最近工作中要求升級(jí),需要在vue中創(chuàng)建多個(gè)ueditor實(shí)例,我使用neditor,其實(shí)就是把ueditor樣式美化了下,其他和ueditor幾乎一樣,下面話不多說了,來一起看看詳細(xì)的介紹吧。
截圖

說明
下載ueditor或neditor源碼,拷貝到static目錄下面

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

在vue項(xiàng)目的main.js添加ueditor引用

新建3個(gè)頁面 home,tab1,tab2。tab1和tab2是home下面的子頁面

在router-view外面一定要添加keep-alive組件和transition組件,不然ueditor實(shí)例無法保存
在components文件夾下面新建一個(gè)editor作為編輯器的公共組件
在tab1中調(diào)用editor,同時(shí)要傳入一個(gè)id并在editor頁面接受,注意如果需要多個(gè)實(shí)例,id一定不能相同
<template>
<div>
<editor ref="editor" id="tab1Editor"></editor>
<button @click="getContent" class="m-t-10">獲取內(nèi)容</button>
<div>
<span>當(dāng)前富文本編輯器內(nèi)容是: {{content}}</span>
</div>
</div>
</template>
<script>
import Editor from '@/components/editor'
export default {
name: 'tab1',
components: { Editor },
data() {
return {
content:''
}
},
methods: {
//獲取內(nèi)容
getContent(){
this.content = this.$refs.editor.content
}
}
}
</script>
<style scoped>
.m-t-10{
margin-top: 10px;
}
</style>
editor頁面代碼,因?yàn)槲覀冊(cè)趓outer-view套用了keep-alive,所以u(píng)editor的初始化一定要放在activated里面,
確保每次進(jìn)入頁面都會(huì)重新渲染ueditor,在deactivated里面調(diào)用ueditor的destroy方法,確保每次離開頁面的時(shí)候
會(huì)銷毀編輯器實(shí)例,這樣就可以渲染多個(gè)ueditor實(shí)例了,并且每次切換都能保存編輯器的內(nèi)容。
如果多個(gè)tab只需要一個(gè)實(shí)例請(qǐng)調(diào)用reset()方法
<template>
<div>
<div :id="this.id"></div>
</div>
</template>
<script>
export default {
name: 'editor',
props: ['id'],
data() {
return {
ue: '', //ueditor實(shí)例
content: '', //編輯器內(nèi)容
}
},
methods: {
//初始化編輯器
initEditor() {
this.ue = UE.getEditor(this.id, {
initialFrameWidth: '100%',
initialFrameHeight: '350',
scaleEnabled: true
})
//編輯器準(zhǔn)備就緒后會(huì)觸發(fā)該事件
this.ue.addListener('ready',()=>{
//設(shè)置可以編輯
this.ue.setEnabled()
})
//編輯器內(nèi)容修改時(shí)
this.selectionchange()
},
//編輯器內(nèi)容修改時(shí)
selectionchange() {
this.ue.addListener('selectionchange', () => {
this.content = this.ue.getContent()
})
}
},
activated() {
//初始化編輯器
this.initEditor()
},
deactivated() {
//銷毀編輯器實(shí)例,使用textarea代替
this.ue.destroy()
//重置編輯器,可用來做多個(gè)tab使用同一個(gè)編輯器實(shí)例
//如果要使用同一個(gè)實(shí)例,請(qǐng)注釋destroy()方法
//this.ue.reset()
}
}
</script>
源碼地址
github:https://github.com/oblivioussing/vue-ueditor-multi
本地下載:http://xiazai.jb51.net/201711/yuanma/vue-ueditor-multi(jb51.net).rar
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
vue路由傳參方式的方式總結(jié)及獲取參數(shù)詳解
vue 路由傳參的使用場(chǎng)景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時(shí),攜帶參數(shù)跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于vue路由傳參方式的方式總結(jié)及獲取參數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Vue實(shí)現(xiàn)實(shí)時(shí)更新sessionStorage數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了Vue如何實(shí)現(xiàn)實(shí)時(shí)更新sessionStorage數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-06-06
vue3接口數(shù)據(jù)賦值對(duì)象,渲染報(bào)錯(cuò)問題及解決
這篇文章主要介紹了vue3接口數(shù)據(jù)賦值對(duì)象,渲染報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue實(shí)現(xiàn)圖片滾動(dòng)的示例代碼(類似走馬燈效果)
下面小編就為大家分享一篇vue實(shí)現(xiàn)圖片滾動(dòng)的示例代碼(類似走馬燈效果),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue中Class和Style實(shí)現(xiàn)v-bind綁定的幾種用法
項(xiàng)目開發(fā)中給元素添加/刪除 class 是非常常見的行為之一, 例如網(wǎng)站導(dǎo)航都會(huì)給選中項(xiàng)添加一個(gè) active 類用來區(qū)別選與未選中的樣式,那么在 vue 中 我們?nèi)绾翁幚磉@類的效果呢?下面我們就一起來了解一下2021-05-05

