最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解vue中使用vue-quill-editor富文本小結(jié)(圖片上傳)

 更新時(shí)間:2019年04月24日 14:11:08   作者:大盤雞拌面  
這篇文章主要介紹了詳解vue中使用vue-quill-editor富文本小結(jié)(圖片上傳),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

vue-quill-editor是我們?cè)偈褂胿ue框架的時(shí)候常用的一個(gè)富文本編輯器,在進(jìn)行富文本編輯的時(shí)候,我們往往要插入一些圖片,vue-quill-editor默認(rèn)的處理方式是直接將圖片轉(zhuǎn)成base64編碼,這樣的結(jié)果是整個(gè)富文本的html片段十分冗余,通常來講,每個(gè)服務(wù)器端接收的post的數(shù)據(jù)大小都是有限制的,這樣的話有可能導(dǎo)致提交失敗,或者是用戶體驗(yàn)很差,數(shù)據(jù)要傳遞很久才全部傳送到服務(wù)器。

1.下載Vue-Quill-Editor

npm install vue-quill-editor --save

2.下載quill(Vue-Quill-Editor需要依賴)

npm install quill --save

3.使用

import { quillEditor } from "vue-quill-editor"; //調(diào)用編輯器
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';

本次使用到了富文本的封裝和上傳圖片,因要求使用element-ui框架,我上傳圖片的時(shí)候選擇了element-ui的Upload上傳組件將圖片上傳到服務(wù)器。再將圖片鏈接插入到富文本中,以達(dá)到最優(yōu)的體驗(yàn)。

子組件中將改變的值,直接發(fā)送給父組件,父組件來完成邏輯處理

<template>
 <div>
  <el-upload      //直接隱藏掉就好了,用功能不用樣式
   v-show="false"
   id="quill-upload"
   action="/api/product/upload.do"
   name="upload_file"
   multiple
   :limit="3"
   list-type="picture"
   :show-file-list="false"
   :before-upload="beforeUpload"
   :on-error="uploadError"
   :on-success="handleExceed">
   <el-button size="small" type="primary" ></el-button>
   <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
  </el-upload>
  <el-row v-loading="uillUpdateImg">
   <quillEditor
    ref="myQuillEditor"
    @change="onEditorChange($event)"
    v-model="value"
    :options="editorOption"/>
  </el-row>
 </div>
</template>
<script>
import { quillEditor } from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
export default {
 name: "richText",
 components:{quillEditor},
 props:['content'],               //父組件傳過來的,將傳過來的渲染到富文本編輯器
 data(){
  return{
   uillUpdateImg:false,            //根據(jù)圖片上傳狀態(tài)來確定是否顯示loading動(dòng)畫
   serverUrl:'', //上傳的圖片服務(wù)器地址
   value:this.content,             //富文本內(nèi)容
   editorOption: {               //符文本編輯器的配置
    placeholder: '',
    theme: 'snow',
    modules: {
     toolbar: {
      container: [             // 工具欄配置, 默認(rèn)是全部
       ['bold'],
       ['italic'],
       ['underline'],
       ['strike'],
       [{'list':'ordered'},{'list': 'bullet' }],
       ['blockquote'], ['code-block'],
       ['link'],
       ['image'],
       [{'list': 'ordered'}, {'list': 'bullet'}],
      ],
      handlers: {
       'image': function (value) {
        if (value) {
         // 給個(gè)點(diǎn)擊觸發(fā)Element-ui,input框選擇圖片文件
         document.querySelector('#quill-upload input').click()
        } else {
         this.quill.format('image', false);
        }
       }
      }
     }
    }
   }
  }
 },
 methods:{
  onEditorChange({ quill, html, text }) {   //富文本編輯器內(nèi)容發(fā)生改變的時(shí)候
   this.value = html
   this.$emit('textChange',html)       //將富文本編輯器輸入的文本發(fā)送給父組件,父組件涉及提交添加或者更改
  },
  beforeUpload(){               //上傳圖片之前開啟loading
   this.uillUpdateImg = true
  },
  uploadError(){               //圖片上傳失敗,關(guān)閉loading
   this.uillUpdateImg = false
   this.$message.error('圖片插入失敗')
  },
  handleExceed(response, file, fileList){   //圖片添加成功
   let quill = this.$refs.myQuillEditor.quill
   console.log(response)
   if (response.status === 0) {
    let length = quill.getSelection().index;
    // 插入圖片 response.data.url為服務(wù)器返回的圖片地址
    quill.insertEmbed(length, 'image', response.data.url)
    // 調(diào)整光標(biāo)到最后
    quill.setSelection(length + 1)
   }else{
    this.$message.error('圖片插入失敗')
   }
   this.fileList = fileList
   this.uillUpdateImg = false
  },
 }
}
</script>
<style scoped>
</style>

配置中的handlers是用來定義自定義程序的,然而我們配置完后會(huì)懵逼地發(fā)現(xiàn),整個(gè)富文本編輯器的工具欄的圖片上傳等按鈕都不見了 只保留了幾個(gè)基本的富文本功能。

這個(gè)是因?yàn)樘砑幼远x處理程序?qū)⒏采w默認(rèn)的工具欄和主題行為

因此我們要再自行配置下我們需要的工具欄,所有功能的配置如下,大家可以按需配置,這里看起來一大堆,也不美觀,大家也可以配置一個(gè)單獨(dú)的config文件引入。

有一點(diǎn)注意的地方,父組件中傳入子組件中的值,子組件里面發(fā)生改變以后再傳給父組件。將變量時(shí)存放在props屬性中的,我們?cè)谡{(diào)用變量的時(shí)候是跟data里面的變量一樣的,都是通過this.變量來調(diào)用,這個(gè)問題就是說父組件傳入子組件的變量是不能this.變量直接改變的,要在data或者computed屬性里面重新定義一個(gè)變量,或者監(jiān)聽props接受變量的變化。改變data或者computed屬性里面的變量就不會(huì)報(bào)錯(cuò)了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue開發(fā)實(shí)現(xiàn)吸頂效果的示例代碼

    Vue開發(fā)實(shí)現(xiàn)吸頂效果的示例代碼

    這篇文章主要介紹了Vue開發(fā)實(shí)現(xiàn)吸頂效果的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 一文了解vue-router之hash模式和history模式

    一文了解vue-router之hash模式和history模式

    這篇文章主要介紹了一文了解vue-router之hash模式和history模式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • ElementUI之表格toggleRowSelection選中踩坑記錄

    ElementUI之表格toggleRowSelection選中踩坑記錄

    這篇文章主要介紹了ElementUI之表格toggleRowSelection選中踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue 3 中watch 和watchEffect 的新用法

    vue 3 中watch 和watchEffect 的新用法

    本篇文章主要通過 Options API 和 Composition API 對(duì)比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對(duì)大家有所幫助
    2021-11-11
  • vue3如何監(jiān)聽頁面的滾動(dòng)

    vue3如何監(jiān)聽頁面的滾動(dòng)

    這篇文章主要給大家介紹了關(guān)于vue3如何監(jiān)聽頁面的滾動(dòng)的相關(guān)資料,在vue中實(shí)現(xiàn)滾動(dòng)監(jiān)聽和原生js無太大差異,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • vue中的el-button樣式自定義方式

    vue中的el-button樣式自定義方式

    這篇文章主要介紹了vue中的el-button樣式自定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue3+element-plus 實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)路由的渲染的項(xiàng)目實(shí)踐

    vue3+element-plus 實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)路由的渲染的項(xiàng)目實(shí)踐

    本文主要介紹了vue3+element-plus 實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)路由的渲染的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Vue中添加過渡效果的方法

    Vue中添加過渡效果的方法

    本篇文章主要介紹了Vue中添加過渡效果的方法,Vue 在插入、更新或者移除 DOM 時(shí),提供多種不同方式的應(yīng)用過渡效果,有興趣的同學(xué)可以了解一下。
    2017-03-03
  • vue+elementui 實(shí)現(xiàn)上傳文件/導(dǎo)入文件的功能示例詳解

    vue+elementui 實(shí)現(xiàn)上傳文件/導(dǎo)入文件的功能示例詳解

    文章介紹了如何使用Vue和Element UI實(shí)現(xiàn)上傳文件和導(dǎo)入文件的功能,主要內(nèi)容包括:上傳組件的使用、data中的數(shù)據(jù)存儲(chǔ)、methods中的方法(選擇文件、點(diǎn)擊確定上傳文件、刪除文件),文章還提供了相關(guān)鏈接供進(jìn)一步學(xué)習(xí),感興趣的朋友一起看看吧
    2025-03-03
  • vue深拷貝的3種實(shí)現(xiàn)方式小結(jié)

    vue深拷貝的3種實(shí)現(xiàn)方式小結(jié)

    當(dāng)使用同一個(gè)對(duì)象產(chǎn)生沖突時(shí),可以使用lodash包,對(duì)該對(duì)象進(jìn)行深拷貝,從而使操作的對(duì)象為不同的對(duì)象,這篇文章主要給大家介紹了關(guān)于vue深拷貝的3種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

泸西县| 石门县| 峡江县| 苏尼特左旗| 江陵县| 禹州市| 凌海市| 金华市| 泗阳县| 宿迁市| 保靖县| 高台县| 北宁市| 万山特区| 琼海市| 抚顺市| 舒城县| 敖汉旗| 无极县| 珠海市| 望奎县| 莱芜市| 陕西省| 广汉市| 如东县| 琼中| 清徐县| 瑞丽市| 兴仁县| 鲁山县| 体育| 伊宁市| 绵竹市| 尼玛县| 新密市| 乡城县| 马山县| 都匀市| 通海县| 平乐县| 花莲市|