当前位置: 首页 > news >正文

[前端] wang 富文本 vue3

官方链接

https://www.npmjs.com/package/@wangeditor-next/editor-for-vue

<template><div style="border: 1px solid #ccc"><Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" /><Editor style="height: 500px; overflow-y: hidden;" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode"@onCreated="handleCreated" /></div><div v-html="valueHtml"></div>
</template><script>
import '@wangeditor/editor/dist/css/style.css'; // 引入 cssimport { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';export default {components: { Editor, Toolbar },setup() {// 编辑器实例,必须用 shallowRefconst editorRef = shallowRef();// 内容 HTMLconst valueHtml = ref('<p>hello</p>');// 模拟 ajax 异步获取内容onMounted(() => {setTimeout(() => {valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>';}, 1500);});const toolbarConfig = {excludeKeys: ['uploadImage', // 隐藏图片上传按钮(使用粘贴功能)'group-video'  // 隐藏视频相关功能]};const editorConfig = {placeholder: '请输入内容...',uploadImgShowBase64: true,MENU_CONF: {uploadImage: {server: null,pasteImage: true,base64LimitSize: 5 * 1024 * 1024}}};// 组件销毁时,也及时销毁编辑器onBeforeUnmount(() => {const editor = editorRef.value;if (editor == null) return;editor.destroy();});const handleCreated = (editor) => {editorRef.value = editor; // 记录 editor 实例,重要!};return {editorRef,valueHtml,mode: 'default', // 或 'simple'toolbarConfig,editorConfig,handleCreated,};},
};
</script><style lang="scss" scoped></style>

改造

<template><div style="border: 1px solid #ccc"><Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" mode="default" /><Editorstyle="height: 500px; overflow-y: hidden;"v-model="valueHtml":defaultConfig="editorConfig"mode="default"@onCreated="handleCreated"/></div><div v-html="valueHtml"></div>
</template><script>
import '@wangeditor/editor/dist/css/style.css';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';export default {components: { Editor, Toolbar },data() {return {editorRef: null,      // 编辑器实例引用valueHtml: '<p>hello</p>', // 内容toolbarConfig: {      // 工具栏配置excludeKeys: ['uploadImage', 'group-video']},editorConfig: {       // 编辑器配置placeholder: '请输入内容...',uploadImgShowBase64: true,MENU_CONF: {uploadImage: {server: null,pasteImage: true,base64LimitSize: 5 * 1024 * 1024}}}}},mounted() {// 模拟异步数据setTimeout(() => {this.valueHtml = '<p>模拟 Ajax 异步设置内容</p>'}, 1500)},beforeUnmount() {// 组件销毁时销毁编辑器if (this.editorRef) this.editorRef.destroy()},methods: {handleCreated(editor) {this.editorRef = editor // 保存编辑器实例}}
}
</script>

如果设置read only

      // 只读预览编辑器配置previewEditorConfig: {readOnly: true, // 关键:设置为只读模式autoFocus: false,scroll: false,MENU_CONF: {}}
http://www.xdnf.cn/news/486307.html

相关文章:

  • 【GaussDB迁移攻略】DRS支持CDC,解决大规模数据迁移挑战
  • 芯谷产业园:双流元宇宙开放数字贸易新坐标
  • C++:字符串操作函数
  • 刷leetcodehot100返航版--双指针5/16
  • 虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身
  • 腾讯云代码助手CodeBuddy使用体验
  • 7.1Java多线程安全和同步
  • vue 指令
  • python版本管理工具-pyenv轻松切换多个Python版本
  • DATE_FORMAT可以接收date类型,也可以接收String类型!
  • this.$set的用法-响应式数据更新
  • oracle主备切换参考
  • 初学者如何用 Python 写第一个爬虫?
  • 【LLM】大模型落地应用的技术 ——— 推理训练 MOE,AI搜索 RAG,AI Agent MCP
  • ​小店推客系统开发SEO全攻略:从技术架构到流量裂变,打造私域增长引擎
  • Android framework 中间件开发(二)
  • 贝叶斯英文单词拼写纠错器(Python)
  • 小型研发团队的项目管理:挑战与高效工具推荐
  • 实时数据流处理的利器:如何利用 Spark Streaming 让数据动起来?
  • Java 流(Stream)API
  • CSS- 3.1 盒子模型-块级元素、行内元素、行内块级元素和display属性
  • MySQL高效开发规范
  • 不清楚的点
  • RNope:结合 RoPE 和 NoPE 的长文本建模架构
  • git相关配置
  • 深入理解 this 指向与作用域解析
  • 使用 gcloud CLI 自动化管理 Google Cloud 虚拟机
  • AGI大模型(19):下载模型到本地之ModelScope(魔搭社区)
  • FreeSWITCH Jitter Buffer 技术解析与应用指南
  • OpenCV边界填充(Border Padding)详解:原理、方法与代码实现