昨天的需求是把textarea换成富文本编辑器的形式,php
网上找了几种富文本编辑器ueditor、tinymce等,html
以为ueditor实现双向绑定还挺有意思,vue
分享一下~git
按照下面步骤便可github
前言web
vue2 https://github.com/yangTwo100/vue2UEditorvue-cli
vue-cli3npm
安装插件服务器
npm i vue-ueditor-wrap // 或者 yarn add vue-ueditor-wrap
下载最新编译的UEditorapp
点击链接修复好的内容如图所示:
根据你的须要下载这八个中的一个便可。
将下载好的压缩包解压并命名为UEditor
放入你的static目录下
引入VueUeditorWrap组件
import VueUeditorWrap from 'vue-ueditor-wrap' // ES6 Module // 或者 const VueUeditorWrap = require('vue-ueditor-wrap') // CommonJS
注册组件
components: { VueUeditorWrap } // 或者在 main.js 里将它注册为全局组件 Vue.component('vue-ueditor-wrap', VueUeditorWrap)
v-model绑定数据
<vue-ueditor-wrap v-model="msg"></vue-ueditor-wrap>
data () { return { msg: '<h2><img src="http://img.baidu.com/hi/jx2/j_0003.gif"/>Vue + UEditor + v-model双向绑定</h2>' } }
至此你已经能够在页面中看到一个初始化以后的 UEditor
了,而且它已经成功和数据绑定了!👏👏👏
根据项目需求修改配置
完整配置选项查看ueditor.config.js源码或者官方文档
<vue-ueditor-wrap v-model="msg" :config="myConfig"></vue-ueditor-wrap>
data () { return { msg: '<h2><img src="http://img.baidu.com/hi/jx2/j_0003.gif"/>Vue + UEditor + v-model双向绑定</h2>', myConfig: { // 编辑器不自动被内容撑高 autoHeightEnabled: false, // 初始容器高度 initialFrameHeight: 240, // 初始容器宽度 initialFrameWidth: '100%', // 上传文件接口(这个地址是我为了方便各位体验文件上传功能搭建的临时接口,请勿在生产环境使用!!!) serverUrl: 'http://35.201.165.105:8000/controller.php', // UEditor 资源文件的存放路径,若是你使用的是 vue-cli 生成的项目,一般不须要设置该选项,vue-ueditor-wrap 会自动处理常见的状况,若是须要特殊配置,参考下方的常见问题2 UEDITOR_HOME_URL: '/static/UEditor/' } } }
常见报错
这是 UEDITOR_HOME_URL
参数配置错误致使的。在 vue cli 2.x 生成的项目中使用本组件,默认值是 '/static/UEditor/'
,在 vue cli 3.x 生成的项目中,默认值是 process.env.BASE_URL + 'UEditor/'
。但这并不能知足全部状况。例如你的项目不是部署在网站根目录下,如"http://www.example.com/my-app/"
,你可能须要设置为"/my-app/static/UEditor/"
。是否使用了相对路径、路由是否使用 history
模式、服务器配置是否正确等等都有可能会产生影响。总而言之:不管本地开发和部署到服务器,你所指定的 UEditor
资源文件是须要真实存在的,vue-ueditor-wrap
也会在 JS 加载失败时经过 console 输出它试图去加载的资源文件的完整路径,你能够借此分析如何填写。当须要区分环境时,你能够经过判断 process.env.NODE_ENV
来分别设置。
vue-cli3的区别
一、将下载好的压缩包解压并命名为UEditor放入你的public目录下
二、配置UEDITOR_HOME_URL的时候写成'/UEditor/'
data () { return { msg: '<h2><img src="http://img.baidu.com/hi/jx2/j_0003.gif"/>Vue + UEditor + v-model双向绑定</h2>', myConfig: { // 编辑器不自动被内容撑高 autoHeightEnabled: false, // 初始容器高度 initialFrameHeight: 240, // 初始容器宽度 initialFrameWidth: '100%', // 上传文件接口(这个地址是我为了方便各位体验文件上传功能搭建的临时接口,请勿在生产环境使用!!!) serverUrl: 'http://35.201.165.105:8000/controller.php', // UEditor 资源文件的存放路径,若是你使用的是 vue-cli 生成的项目,一般不须要设置该选项,vue-ueditor-wrap 会自动处理常见的状况,若是须要特殊配置,参考下方的常见问题2 UEDITOR_HOME_URL: '/UEditor/' } } }
以上。