wang-editor.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div ref="editor" style="text-align:left"></div>
  3. </template>
  4. <script>
  5. import E from 'wangeditor';
  6. const menus = [
  7. 'code', // 插入代码
  8. 'head', // 标题
  9. 'bold', // 粗体
  10. 'fontSize', // 字号
  11. 'fontName', // 字体
  12. 'italic', // 斜体
  13. 'underline', // 下划线
  14. 'strikeThrough', // 删除线
  15. 'foreColor', // 文字颜色
  16. 'backColor', // 背景颜色
  17. 'link', // 插入链接
  18. 'list', // 列表
  19. 'justify', // 对齐方式
  20. 'quote', // 引用
  21. // 'emoticon', // 表情
  22. 'table', // 表格
  23. // 'video', // 插入视频
  24. 'undo', // 撤销
  25. 'redo', // 重复
  26. ];
  27. export default {
  28. name: 'wang-editor',
  29. model: {
  30. prop: 'value',
  31. event: 'change', // 默认为input时间,此处改为change
  32. },
  33. props: {
  34. value: { type: String, required: false, default: '' },
  35. },
  36. data() {
  37. return {
  38. editorContent: this.value,
  39. };
  40. },
  41. mounted() {
  42. var editor = new E(this.$refs.editor);
  43. editor.customConfig.onchange = html => {
  44. this.editorContent = html;
  45. this.$emit('change', html);
  46. };
  47. // 自定义菜单配置
  48. editor.customConfig.menus = menus;
  49. editor.customConfig.zIndex = 0;
  50. editor.customConfig.uploadImgServer = '/files/cms/images/upload';
  51. editor.customConfig.uploadImgMaxLength = 1;
  52. editor.customConfig.uploadImgHooks = {
  53. // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置
  54. // (但是,服务器端返回的必须是一个 JSON 格式字符串!!!否则会报错)
  55. customInsert: function(insertImg, result, editor) {
  56. // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
  57. // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
  58. // 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:
  59. var url = result.uri;
  60. insertImg(url);
  61. // result 必须是一个 JSON 格式字符串!!!否则报错
  62. },
  63. };
  64. editor.create();
  65. editor.txt.html(this.value);
  66. },
  67. methods: {
  68. getContent: function() {
  69. return this.editorContent;
  70. },
  71. },
  72. };
  73. </script>