在vue2中怎么使用ckeditor,或者有其他的富文本编译器支持本地图片和视频上传?

在vue2中怎么使用ckeditor,或者有其他的富文本编译器支持本地图片和视频上传?

在vue2中怎么使用ckeditor,或者有其他的富文本编译器支持本地图片和视频上传?


回答:

推荐使用tinymce
http://tinymce.ax-z.cn/general/upload-images.php


回答:

ck官方支持vue2啊。。。ckeditor5-vue2

"dependencies": {

"@ckeditor/ckeditor5-build-classic": "^27.1.0",

"@ckeditor/ckeditor5-vue2": "^1.0.5",

}

main.js

---

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

import CKEditor from '@ckeditor/ckeditor5-vue2';

editor.vue

---

<ckeditor

:editor="editor"

v-on:ready="editorReady"

v-model="body"

:config="editorConfig"

></ckeditor>

---

import ClassicEditor from '@ckeditor/ckeditor5-build-classic';

import "@ckeditor/ckeditor5-build-classic/build/translations/zh-cn";

import CKEditor from '@ckeditor/ckeditor5-vue2';

---

editorReady: function (editor) {

//调试存在一个报错 Input argument is not an HTMLInputElement

//但是是 lastpass 报的 @see https://stackoverflow.com/questions/55617318/textareaautosize-with-formik

editor.plugins.get("FileRepository").createUploadAdapter = (loader) => {

return new MyUploadAdapter(loader);

};},

---

/**

* 自定义上传图片插件

@see https://blog.csdn.net/mouday/article/details/107404734

*/

class MyUploadAdapter {

constructor(loader) {this.loader = loader;}

async upload() {

let data = new FormData();

data.append("file", await this.loader.file);

// 方法返回数据格式: {default: "url"}

let result = await helper.query('news_file', data);

return {default: result,};}}


回答:

手上正好有个tinymce的例子:

<template>

<div :id="editorId" >{{ value }}</div>

</template>

<script>

import tinymce from 'tinymce/tinymce'

import 'tinymce/themes/silver/theme.min'

import 'tinymce/icons/default/icons.min'

import 'tinymce/skins/ui/oxide/skin.min.css'

import '../../assets/tiny-zh/zh_CN.js'

import 'tinymce/plugins/image'

import 'tinymce/plugins/imagetools'

import 'tinymce/plugins/media'

import 'tinymce/plugins/preview'

import 'tinymce/plugins/link'

import 'tinymce/plugins/code'

import 'tinymce/plugins/table'

import 'tinymce/plugins/print'

import 'tinymce/plugins/fullscreen'

import 'tinymce/plugins/hr'

import 'tinymce/plugins/textpattern'

import 'tinymce/plugins/lists'

import 'tinymce/plugins/advlist'

import 'tinymce/plugins/searchreplace'

import 'tinymce/plugins/help'

import 'tinymce/plugins/wordcount'

export default {

name: "TinyEditor",

model: {

prop: 'value',

event: 'change'

},

props: {

height: {

default: 300,

type: Number

},

uploadImg: {

default: (blobInfo, success, failure, progress) => {

return;

}

},

placeholder: {

default: '请输入',

type: String

},

value: {

default: '',

type: String

}

},

data() {

return {

editor: null,

editorId: 'tinyEditor_' + Math.random().toString().replace('.',''),

}

},

mounted() {

this.create();

},

methods: {

create() {

const _this = this;

tinymce.init({

selector: `#${this.editorId}`,

language:'zh_CN',

height: this.height,

placeholder: this.placeholder,

inline: false,

plugins :

'image imagetools preview link code table print fullscreen hr textpattern lists advlist searchreplace help media wordcount',

toolbar:

'searchreplace |' +

' undo redo |' +

' bold italic |' +

' formatselect forecolor backcolor quickimage |' +

' alignleft aligncenter alignright |' +

' table bullist numlist hr |' +

' link image media|' +

' fullscreen preview print ',

images_upload_handler: this.uploadImg,

setup: (editor) => {

editor.on('input change undo redo execCommand KeyUp', function(e) {

_this.$emit('change', editor.getContent());

})

}

}).then(res => {

console.log(res);

this.editor = res[0];

}).catch(() => {

this.editor = null;

});

},

setData(HTML) {

if (!this.editor) { return }

this.editor.setContent(HTML);

this.$emit('change', this.editor.getContent());

},

appendData(HTML) {

if (!this.editor) { return }

this.editor.execCommand('mceInsertContent', false, HTML);

this.$emit('change', this.editor.getContent());

},

getData() {

if (!this.editor) { return }

return this.editor.getContent();

},

clearData() {

if (!this.editor) { return }

this.editor.setContent('');

this.$emit('change', this.editor.getContent());

},

destroy() {

if (!this.editor) { return }

this.editor.destroy();

this.editor = null;

},

setDisable() {

if (!this.editor) { return }

this.editor.setMode('readonly');

},

setEnable() {

this.editor.setMode('design');

},

},

}

</script>

以上是 在vue2中怎么使用ckeditor,或者有其他的富文本编译器支持本地图片和视频上传? 的全部内容, 来源链接: utcz.com/p/935506.html

回到顶部