解决富文本编辑器(wangeditor)在vue项目中不能双向数据绑定(v-model)的问题

将富文本编辑器封装成一个组件

首先要明白一个原理,vue中的v-model指令(双向数据绑定)其实这是一种语法糖,它只是给其绑定节点添加了一个input事件,并且给他添加了一个value属性,数值发生变化,他会更新data中的数据,在更新节点的value,从而实现双向数据绑定。

/src/component/Editor/index.vue

组件代码

<template>
  <div>
    <div id="seditor" ref="seditor" @input="change"></div>
  </div>
</template>
<script>
import E from 'wangeditor'  // 通过npm 下载并引入wangeditor
export default {
  props: ['value'],   // 组件引用时添加v-model指令,所以value属性就存在,他的值为v-model等于号后面的变量,通过props将他传递过来
  methods: {
    initEditor () {
       // 创建一个editor实例,并将它挂载到,上面的div上,这样这个div就变成了富文本编辑器
      const editor = new E(this.$refs.seditor) 
      editor.create()
       // 将父组件中v-model所绑定的变量传递给value,再将value赋值给编辑器的内容。
      editor.txt.html(this.value)  
       // 监听value,因为数据流是向下的传递的,父组件v-model绑定的属性一变化,那么value就会变化,从而获取到最新的值,更新编辑器中的内容。
      this.$watch('value', () => {  
        editor.txt.html(this.value)
      })
    },
    change (e) {
        // v-model 指令是会给此节点添加一个input事件,我们在给富文本编辑器添加一个input事件,这么做在于,当输入内容后会获取到最新的内容,通过$emit 触发 父组件v-model所添加的input事件并将最新的内容传递过去,传递过去的值默认就会赋给v-model所绑定的属性。
      this.$emit('input', e.target.innerHTML)
    }
  },
  mounted () {
    this.initEditor()
  }
}
</script>
<style>
</style>

组件应用在页面的代码:

<template>
  <div id="app">
    <s-editor v-model="content" />
  </div>
</template>

<script>
import sEditor from './components/Editor'
export default {
  data () {
    return {
      content: '123'
    }
  },
  name: 'App',
  components: {
    sEditor
  }
}
</script>

<style>
</style>

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Vue富文本编辑框的使用可以通过引入插件来实现。在市场上有很多关于富文本编辑器的插件可供选择,其一个比较常用的是`vue-quill-editor`。以下是使用`vue-quill-editor`的一些操作和注意事项: 1. 首先,你需要在你的Vue项目安装`vue-quill-editor`插件。你可以通过npm或yarn进行安装,具体的安装命令可以参考插件的文档。 2. 安装完插件之后,在你的Vue组件引入`vue-quill-editor`: ```javascript import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' // 引入Quill的核心样式 import 'quill/dist/quill.snow.css' // 引入Quill的snow样式 Vue.use(VueQuillEditor) ``` 3. 在你的组件模板,使用`<vue-quill-editor>`标签来创建富文本编辑框。你可以根据自己的需求自定义标签的属性来配置编辑器的样式和功能。例如: ```html <vue-quill-editor v-model="content" :options="editorOptions" ></vue-quill-editor> ``` 其,`v-model`用于双向绑定编辑器的内容,`editorOptions`是一个配置对象,可以用来自定义编辑器的选项,如工具栏的按钮、字体、颜色等。 4. 对于样式的优化,你可以根据需要进行自定义。根据文档提到的注意点,如果想要给下拉框添加滚动效果,可以使用以下CSS代码: ```css .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { border-color: #ccc; height: 125px; overflow: auto; } ``` 这样,下拉框就会有滚动条,并且高度为125px。 这些就是使用`vue-quill-editor`进行Vue富文本编辑的基本操作和注意事项。你可以根据自己的需求进一步定制和扩展编辑器的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要爆炸的臭臭君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值