vue中使用vue-quill-editor富文字編輯器,自定義toolbar,圖片上傳到七牛
一、npm 安裝 vue-quill-editor
二、在main.js中引入
import VueQuillEditor from 'vue-quill-editor'
// require styles 引入樣式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
Vue.use(VueQuillEditor)
三、將富文字編輯器提出作為元件,上傳圖片到七牛,在獲取七牛返回的圖片url插入到富文字中。
<template> <div> <quill-editor :options="editorOption" v-model="content" ref="QuillEditor" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)" @ready="onEditorReady($event)"></quill-editor> <!-- 檔案上傳input 將它隱藏--> <el-upload class="upload-demo" :action="qnLocation" :before-upload='beforeUpload' :data="uploadData" :on-success='upScuccess' ref="upload" style="display:none"> <el-button size="small" type="primary" id="imgInput" element-loading-text="插入中,請稍候">點選上傳</el-button> </el-upload> </div> </template> <script> import * as Quill from 'quill' // 引入編輯器 import { upQiniu } from '@/api/manage/***' //獲取七牛token export default { name: 'quilleditor', props: { quillData: { type: String, default: false } }, data() { return { bucketQuery: { bucket: 'website-image' }, uploadData: {}, content:this.quillData, // 富文字編輯器內容 editorOption:{ // 初始化富文字編輯器 modules:{ toolbar:[ ['bold', 'italic', 'underline', 'strike', 'link','image', 'video'], [{ 'header': 1 }, { 'header': 2 }], [{ 'list': 'ordered'}, { 'list': 'bullet' }], [{ 'indent': '-1'}, { 'indent': '+1' }], [{ 'align': [] }], [{ 'color': [] }, { 'background': [] }], [{ 'font': [] }], [{ 'header': [1, 2, 3, 4, 5, 6, false] }], ['blockquote', 'code-block'], [{ 'size': ['small', false, 'large', 'huge'] }] ] } }, qiniuaddr: 'pd6rnk9ck.bkt.clouddn.com' // 這是七牛雲空間的外鏈預設域名 } }, computed: { // 上傳七牛的actiond地址,http 和 https 不一樣 qnLocation () { return location.protocol === 'http:' ? 'http://upload.qiniu.com' : 'https://up.qbox.me' } }, methods: { // 圖片上傳之前調取的函式 beforeUpload (file) { return this.qnUpload(file) }, // 圖片上傳前獲得資料token資料 qnUpload (file) { const suffix = file.name.split('.') const ext = suffix.splice(suffix.length - 1, 1)[0] if (this.uploadType === 'image') { // 如果是點選插入圖片 // TODO 圖片格式/大小限制 return upQiniu(this.bucketQuery).then(res => { this.uploadData = { // key: `image/${suffix.join('.')}_${new Date().getTime()}.${ext}`, //重新命名 token: res.data } }) } else if (this.uploadType === 'video') { // 如果是點選插入視訊 return upQiniu(bucketQuery).then(res => { this.uploadData = { // key: `video/${suffix.join('.')}_${new Date().getTime()}.${ext}`, //重新命名 token: res } }) } }, // 圖片上傳成功回撥 插入到編輯器中 upScuccess (e, file, fileList) { let vm = this let url = '' if (this.uploadType === 'image') { // 獲得檔案上傳後的URL地址 url = 'http://' + this.qiniuaddr + '/' + e.key } else if (this.uploadType === 'video') { url = 'http://' + this.qiniuaddr + '/' + e.key } if (url != null && url.length > 0) { // 將檔案上傳後的URL地址插入到編輯器文字中 let value = url // API: https://segmentfault.com/q/1010000008951906 // this.$refs.myTextEditor.quillEditor.getSelection(); // 獲取游標位置物件,裡面有兩個屬性,一個是index 還有 一個length,這裡要用range.index,即當前游標之前的內容長度,然後再利用 insertEmbed(length, 'image', imageUrl),插入圖片即可。 vm.addRange = vm.$refs.QuillEditor.quill.getSelection() value = value.indexOf('http') !== -1 ? value : 'http:' + value vm.$refs.QuillEditor.quill.insertEmbed(vm.addRange !== null ? vm.addRange.index : 0, vm.uploadType, value, Quill.sources.USER) // 呼叫編輯器的 insertEmbed 方法,插入URL } else { this.$message.error(`${vm.uploadType}插入失敗`) } this.$refs['upload'].clearFiles() // 插入成功後清除input的內容 }, // 點選圖片ICON觸發事件 imgHandler (state) { this.addRange = this.$refs.QuillEditor.quill.getSelection() if (state) { let fileInput = document.getElementById('imgInput') fileInput.click() // 加一個觸發事件 } this.uploadType = 'image' }, // 點選視訊ICON觸發事件 videoHandler (state) { this.addRange = this.$refs.QuillEditor.quill.getSelection() if (state) { let fileInput = document.getElementById('imgInput') fileInput.click() // 加一個觸發事件 } this.uploadType = 'video' }, created () { this.$refs = { QuillEditor: HTMLInputElement, imgInput: HTMLInputElement } }, onEditorFocus() { }, onEditorReady() { }, onEditorBlur() { }, onEditorChange({editor, html, text}) { this.$emit('change-content',html) // console.log(html) } }, // 頁面載入後執行 為編輯器的圖片圖示和視訊圖示繫結點選事件 mounted () { // 為圖片ICON繫結事件 getModule 為編輯器的內部屬性 // console.log(this.$refs.QuillEditor.quill) this.$refs.QuillEditor.quill.getModule('toolbar').addHandler('image', this.imgHandler) this.$refs.QuillEditor.quill.getModule('toolbar').addHandler('video', this.videoHandler) // 為視訊ICON繫結事件 this.content = this.quillData let that = this setTimeout(function(){ // console.log(that.quillData) that.content = that.quillData },200) } } </script>
四、引入富文字元件,listEditQuery.rule是我這邊編輯功能時需要的欄位。
這裡需要獲取富文字穿給父元件的值(@change-content="listenToChild"),通過此方法獲取
<!-- 引入富文字編輯器 -->
<quill-editor @change-content="listenToChild" v-if="flag" :quillData="listEditQuery.rule"></quill-editor>
import quillEditor from '@/components/Quilleditor' //這裡根據自己元件所放位置配置 import { ImportDetail } from '@/api/manage/***' export default { data(){ return{ listEditQuery:{}, flag:false //在父元件定義一個flag,當資料獲得的之後再進行子元件的渲染 } } components: { quillEditor }, methods: { getList(){ this.listLoading = true ImportDetail(this.listQuery).then(response => { this.listLoading = false this.listEditQuery = response.data this.flag = true }).catch(err => { console.log(err, '沒有資料1') this.tableData = [] this.listLoading = false }) }, //富文字 賽事章程 listenToChild(val){ this.listEditQuery .rule = val // console.log(this.listEditQuery.rule) } }, mounted () { this.getList() } }
相關推薦
SSM整合富文字編輯器editormd、常用Api、圖片上傳、回顯
前言: 幾天前,集成了百度的ueditor,感覺不符合現代前端的審美邏輯,並且肥胖,pass了,偶然發現editormd,覺得美滋滋,一路踩坑下來,特此記錄 editormd:支援 AMD / CMD 模組化載入(支援 Require.js & Se
vue中使用vue-quill-editor富文字編輯器,自定義toolbar修改工具欄options
基於webpack和vue 一、npm 安裝 vue-quill-editor 二、在main.js中引入 import VueQuillEditor from 'vue-quill-editor' // require styles 引入樣式 im
vue中使用vue-quill-editor富文字編輯器,自定義toolbar,圖片上傳到七牛
一、npm 安裝 vue-quill-editor 二、在main.js中引入 import VueQuillEditor from 'vue-quill-editor' // require styles 引入樣式 import 'quill/dist/quill.c
【Vue】quill-editor富文字編輯器元件的運用與修改配置使圖片上傳到伺服器
前言:Vue的生態已經越來越繁榮,越來越多有趣好用的元件加入的生態中了。quill-editor富文字編輯器就是很好用的元件之一。 一、quill-editor的安裝與使用 ①、安裝 npm install vue-quill-editor --save ②、
Vue +Element UI +vue-quill-editor 富文字編輯器及插入圖片自定義
1.安裝npm install vue-quill-editor --save2.在main.js中引入import VueQuillEditor from 'vue-quill-editor' im
Vue基於vue-quill-editor富文字編輯器使用心得
vue-quill-editor的guthub地址,現在市面上有很多的富文字編輯器,我個人還是非常推薦Vue自己家的vue-quill-deitor,雖然說只支援IE10+,但這種問題,帥給別人吧! 那麼我們直擊正題,在vue中使用quill呢,我們需要npm進行安裝,安裝命令如下: npm ins
vue 整合ueditor(百度富文字編輯器)以及使用後端Java上傳圖片到伺服器,特別注意的大坑
1.import 引入ueditor時,在封裝元件中引入,不要在mian.js內引入,在main.js內引入會造成 1.Uncaught SyntaxError: Unexpected token : 這種錯誤,屬於是跨域問題,目前不清楚是什麼原因和原理,
富文字編輯器UEditor自定義工具欄(一、基礎配置與字型、背景色、行間距、超連結實現)
導讀:UEditor 是由百度「FEX前端研發團隊」開發的所見即所得富文字web編輯器,功能強大,可定製,是一款優秀的國產線上富文字編輯器,編輯器內可插入圖片、音訊、視訊等。 一、UEditor自定義工具欄效果圖如下: 二、UEditor富文字編輯器環境搭建及專案引用 環境搭建不再贅述,請自行查閱或者參考以
在Vue專案使用quill-editor帶樣式編輯器(更改插入圖片和視訊) 運用vue-quilt-editor編寫富文字編輯器 自定義圖片路徑 獲取後臺返回路徑
一、首先在main.js 引入 vue-quilt-editorimport VueQuillEditor from 'vue-quill-editor'import 'quill/dist/quill.core.css'import 'quill/dist/quill.s
element-ui vue-quill-editor 富文字編輯框自定義圖片插入
前言 因為使用者需要編輯自定義頁面,這裡就要用到富文字編輯框,可以插入圖片插入視訊。我選擇了vue-quill-editor。然後問題來了,現實需求和引入的框架衝突。 問題引入 vue-quill-editor預設的圖片插入方式,是直接將圖
vue使用editor富文字編輯器
最近公司系統要換成前後端分離的,前端採用vue框架,而我負責的模組剛好有富文字編輯器,查了好幾種編輯器,最後還是決定用ueditor 百度編輯器目錄結構: 將config.json檔案放在conf下:修改獲取config.json的路徑地址 controller類獲取
vue整合百度UEditor富文字編輯器使用教程
在前端開發的專案中,難免會遇到需要在頁面上整合一個富文字編輯器。那麼,如果你有這個需求,希望可以幫助到你。 vue是前端開發者所追捧的框架,簡單易上手,但是基於vue的富文字編輯器大多數太過於精簡。於是我將百度富文字編輯器放到vue專案中使用。效果圖如下 前端精品教程:百度網盤下載 廢話不多說。
vue整合百度UEditor富文字編輯器
在前端開發的專案中。難免會遇到需要在頁面上整合一個富文字編輯器。那麼。如果你有這個需求。希望可以幫助到你 vue是前端開發者所追捧的框架,簡單易上手,但是基於vue的富文字編輯器大多數太過於精簡。於是我將百度富文字編輯器放到vue專案中使用。效果圖如下 廢話
Python中mysql資料庫儲存富文字編輯器中的內容
使用python 模組MySQLdb自帶的針對mysql的字元轉義函式 escape_string """insert into csdn_test(message) VALUES("%s");""" % (pymysql.escape_string(item['content']))
angularjs中簡單使用kindeditor富文字編輯器
如何在angularjs中快速使用kindeditor富文字編輯器 ? 先引入相關的css樣式和js檔案: <!-- 富文字編輯器 --> <link rel="stylesheet" href="../plugins/kindedit
ssm+maven專案中加入“百度富文字編輯器”,實現圖片上傳
1.在UEditor官方下載編輯器。2.解壓壓縮檔案到資料夾,因為預設的資料夾名字過長,建議重新命名一下資料夾名,我這裡命名為ueditor資料夾中對應的目錄為3.將整個資料夾copy到專案webapp目錄下,(我這裡用的是IDEA,不知道什麼原因直接往IDEA開啟的專案裡拷
【在MVC中應用百度富文字編輯器】
1.下載.NET版本的百度富文字編輯器,前往 下載.NET版本百度富文字框 2.解壓下載的.zip壓縮包,將utf8-.net資料夾名稱改為:ueditor,複製到MVC根目錄下面。結構如下: App_Code 上的檔案是應用程式的原始碼 Config.cs 負
react 0.14中使用百度富文字編輯器
2017年12月01日 15:59:33 lz101281 閱讀數:1293 標籤: ie 8 語言
使用百度editor 富文字編輯器上傳圖片
在jsp 檔案中 <img src="F:/upload/image/test.jpg"/> 這樣是引不到圖片的。因為,JSP頁面在引圖片的時候是 在頁面解析的路徑是:<img src="http://localhost:8080/upload/images/test.jpg">。也就
python web.py中使用百度富文字編輯器 UEditor
原文連結 http://flask123.sinaapp.com/article/47/UEditor簡介UEditor是由百度「FEX前端研發團隊」開發的所見即所得富文字web編輯器,具有輕量,可定製,注重使用者體驗等特點,開源基於MIT協議,允許自由使用和修改程式碼。由於