首页 > 其他分享 >vue-quill编辑器vue2版

vue-quill编辑器vue2版

时间:2024-01-13 11:44:06浏览次数:30  
标签:vue false form height vue2 import quill

效果图

<template>
  <div class="app-container">
    <p class="warn-content">
      Markdown 基于
      <el-link type="primary" href="javascript:void 0;" target="_blank">vue quill</el-link>
    </p>
    <el-button @click="copyHtml()">一键复制 HTML</el-button>
    <el-button @click="copy()">一键复制 TEXT</el-button>
    <el-button @click="dialogFormVisible = true">添加图片链接</el-button>
    <div id="editor" />

    <el-dialog title="图片链接" :visible.sync="dialogFormVisible">
      <el-form :model="form">
        <el-form-item label="图片链接" :label-width="formLabelWidth">
          <el-input v-model="form.link" auto-complete="off" />
        </el-form-item>
      </el-form>

      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="imgAdd()">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import '@vueup/vue-quill/dist/vue-quill.snow.css'
import { mapGetters } from 'vuex'
import Quill from 'quill'

export default {
  name: 'VueQuill',
  components: {
  },
  data() {
    return {
      height: document.documentElement.clientHeight - 200 + 'px',
      quill: {},
      dialogFormVisible: false,
      form: {},
      formLabelWidth: '120px'
    }
  },
  computed: {
    ...mapGetters([
      'imagesUploadApi',
      'baseApi'
    ])
  },
  mounted() {
    const that = this
    const container = document.getElementById('editor')
    this.quill = new Quill(container, {
      theme: 'snow',
      debug: 'warn',
      modules: {
        toolbar:
          [
            ['bold', 'italic', 'underline', 'strike', 'link'],
            ['blockquote', 'code-block'],
            [{ 'size': ['small', false, 'large', 'huge'] }],
            [{ 'font': [] }],
            [{ 'align': [] }],
            [{ 'list': 'ordered' }, { 'list': 'bullet' }],
            [{ 'indent': '-1' }, { 'indent': '+1' }],
            [{ 'header': [1, 2, 3, 4, 5, 6, false] }],
            ['image'],
            [{ 'direction': 'rtl' }],
            [{ 'color': [] }],
            [{ 'background': [] }]
          ]
      },
      placeholder: '',
      readOnly: false,
      content: '',
      contentType: 'html'
    })
    window.onresize = function temp() {
      that.height = document.documentElement.clientHeight - 200 + 'px'
    }
  },
  methods: {
    copyHtml() {
      navigator.clipboard.writeText(this.quill.root.innerHTML.toString())
    },
    copy() {
      navigator.clipboard.writeText(this.quill.root.textContent.toString())
    },
    imgAdd() {
      this.dialogFormVisible = false
      this.quill.insertEmbed(10, 'image', this.form.link)
      this.form = {}
    }
  }
}
</script>

<style scoped>
.v-note-wrapper.shadow {
  z-index: 5;
}

#editor {
  height: 600px;
  width: 100%;
}

#show {
  width: 100%;
  height: 600px;
}
</style>

标签:vue,false,form,height,vue2,import,quill
From: https://www.cnblogs.com/lambertlt/p/17962178

相关文章

  • 基于SpringBoot+Vue的居家养老系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • vue-quill编辑器网页版
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="w......
  • Vue3 的效率提升主要表现在哪些方面?
    Vue3带来了许多性能优化和效率提升的特性。本文将重点讨论Vue3在静态提升、预字符串化、缓存事件处理函数、BlockTree和PatchFlag方面的改进。我们将通过对比Vue2和Vue3的编译结果来说明这些方面的效率提升。静态提升在Vue2中,每次渲染时都会重新创建VNode节点,即使是静态节点也会被......
  • Vue 3 Composition API 详解
    一、引言在Vue3中,引入了一个新的CompositionAPI,旨在提供一种更灵活和可重用的方式来组织组件代码。CompositionAPI基于函数式编程思想,允许开发者将逻辑和状态管理逻辑分离,使代码更加清晰和可维护。二、CompositionAPI的核心概念响应式数据在Vue3中,响应式数据是组件状态的重要......
  • VUE怎么提示,当用户关闭标签页,提示离开此网站?系统可能不会保存
    如果您想在用户关闭标签页时提示而不是基于路由的导航离开,您可以使用beforeunload事件。在Vue中,可以在组件的mounted钩子中添加事件监听器。以下是一个简单的示例:<template><div><!--YourVuecomponentcontentgoeshere--></div></template><script>expo......
  • 从0开始使用vue-cli构建Vue3项目
    一、环境检查1、环境是否正常#查询Node版本node-v#查询vue版本npminfovue#查询vue-cli版本vue-V2、如果没有安装vue-cli,可以执行下方命令安装vue-cli最新版本npminstall-g@vue/cli如果是旧版本,可以执行下方命令卸载旧版本,然后再安装新版本的脚手架npmuninstallv......
  • vue使用flexible.js 最大宽度只有540
    分辨率大于540px的时候,flexible限制为540,一般的手机显示没有问题,但对于大于540的竖屏屏幕,可能右边就会留白。我想让横屏的时候限制在540,竖屏的时候根据页面实际宽度自适应,解决方法如下:1、安装npminstalllib-flexible--save 2、为了避免每次安装的时候,都被覆盖掉,打开\nod......
  • Vue.nextTick在动态更新iframe的src中的使用
    Vue.nextTick在动态更新iframe的src中的使用:https://codeleading.com/article/63673310260/ 当iframe中的地址src需要动态改变时,需要使用Vue.nextTick来切换地址src,否则DOM的地址不会实现更新,而是保持上一次的src。在数据变化后要执行的某个操作,而这个操作需要使用随数据改变......
  • vue入门——???06days
    案例回顾:点击显示小电影案例-按钮点击事件-axios.get().then(res=>{res.data#响应体的内容})-v-for循环---》div#2计算属性-必须要有返回值,返回值当做属性的值-方法当属性用-computed中-它依赖的变量发生变......
  • vue 高德地图异步引用
    先建立一个文件,引入高德  gDMapLoader.jsconstak='4e9f15de14b05fd8f19e1d8fbe91f0a3'exportdefaultfunctionload(){returnnewPromise(function(resolve,reject){if(window.AMap){resolve(window.AMap)}else{varscript=doc......