12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <template>
- <div id="editor">
- <div style="border: 1px solid #ccc">
- <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" />
- <Editor class="editor" :value="text" @input="toInput" :defaultConfig="ec" :mode="mode" @onCreated="onCreated" />
- </div>
- </div>
- </template>
- <script>
- import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
- export default {
- name: 'editor',
- props: {
- text: { type: String },
- mode: { type: String, default: 'default' }, // 或者simple
- toolbarConfig: { type: Object, default: () => ({}) },
- editorConfig: { type: Object, default: () => ({}) },
- },
- model: {
- prop: 'text',
- event: 'input',
- },
- components: { Editor, Toolbar },
- data: function () {
- return {
- editor: null,
- ec: { placeholder: '请输入内容...', ...this.editorConfig },
- };
- },
- created() {},
- methods: {
- onCreated(editor) {
- this.editor = Object.seal(editor); // 一定要用 Object.seal() ,否则会报错
- },
- toInput(e) {
- this.$emit('input', e);
- },
- },
- beforeDestroy() {
- const editor = this.editor;
- if (editor == null) return;
- editor.destroy(); // 组件销毁时,及时销毁编辑器
- },
- };
- </script>
- <style src="@wangeditor/editor/dist/css/style.css"></style>
- <style lang="less" scoped>
- .editor {
- height: 500px;
- overflow-y: hidden;
- }
- </style>
|