vue-codemorror sql模式 并且支持输入 进行关键词提示,在element-dialog/drawer等弹出框中清空处理

<codemirror
          ref="sqlCode"
          v-model="sqlContent"
          :options="cmOptions"
        />
npm install  @vue-codemirror
"vue-codemirror": "^4.0.0",

//在组件的使用
// require component
import { codemirror } from 'vue-codemirror'
// require styles
import 'codemirror/lib/codemirror.css'

import 'codemirror/theme/xq-dark.css' // 主题色

import 'codemirror/addon/selection/active-line'

// 引入代码自动提示插件
require('codemirror/lib/codemirror')
require('codemirror/mode/sql/sql'); // sql模式
require('codemirror/addon/hint/show-hint'); // 代码提示插件
require('codemirror/addon/hint/sql-hint')
import 'codemirror/addon/hint/show-hint.css'; // 代码提示插件颜色


配置(vue中的data)
   sqlContent: "",
    cmOptions: {
        // codemirror options
        tabSize: 4,
        mode: 'text/x-sql', // 设置语言模式为sql
        theme: 'xq-dark', // 设置主题颜色
        lineNumbers: true,
        smartIndent: true,
        line: true,
        autofocus: false,
        extraKeys: {
          'Ctrl': 'autocomplete' // 启用自动补全
        },
        hintOptions: { // 自定义提示选项
          completeSingle: false // 允许多个提示

        },

        styleActiveLine: true // 设置光标所在行高亮
        // more codemirror options, 更多 codemirror 的高级配置...

      },
  mounted() {
    // sql代码提示
    const cm = this.$refs.sqlCode.cminstance
    console.log(cm, 'cm')
    cm.on('change', () => {
      cm.showHint();// 进行自动提示 比如在输入每个词的时候 进行手动触发代码提示
      // 发现在页面中到上面一步直接就完成了。
      //但是在弹出框等有遮罩层的页面中使用codemirror的show-lint代码提示功能,层级好像不够,需要设置其层级为最高,否则在弹出框中 看不到代码提示框
      this.$nextTick(() => {
        const hintsUl = document.getElementsByClassName('CodeMirror-hints')[0]
        console.log(hintsUl, 'hintsUl')
        if (hintsUl) {
          hintsUl.classList.add('dialog-hint-sql-tip')
        }
      })
    })
  },
//最后设置css样式
<style lang="scss">
.dialog-hint-sql-tip {
  z-index: 9999 !important;
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在el-dialog弹出框中无法看到vue-codemirror关键词弹出提示,可能是由于以下几个原因导致的: 1. 弹出框遮挡了关键词提示框:el-dialog弹出框可能会覆盖在vue-codemirror组件上方,导致关键词提示框无法显示。你可以尝试调整弹出框的位置或者使用CSS样式将其z-index值设置为较高的值,确保它在vue-codemirror之上。 2. 组件初始化时未正确注册关键词提示功能:可能是因为在组件初始化时未正确注册或配置vue-codemirror关键词提示功能。请确保已经按照正确的方式引入并初始化vue-codemirror,并正确配置了关键词提示的选项。 3. 关键词提示功能未正确设置:可能是因为未正确设置vue-codemirror关键词提示功能。请确保已经正确配置了关键词提示的选项,例如设置了关键词列表、自定义提示函数等。 针对以上可能的问题,你可以参考以下步骤来解决: 1. 确认el-dialog弹出框的样式和位置:检查el-dialog弹出框的样式和位置,确保不会遮挡vue-codemirror组件。你可以使用开发者工具检查元素的层级关系和样式设置。 2. 确认vue-codemirror的引入和初始化:确保已正确引入vue-codemirror组件,并在组件中正确初始化。你可以检查相关的文档或示例代码,确保按照正确的方式使用vue-codemirror。 3. 配置关键词提示功能:在vue-codemirror组件中配置关键词提示功能,确保已设置了正确的关键词列表、自定义提示函数等。你可以参考vue-codemirror的文档或示例代码,了解如何正确配置关键词提示功能。 如果你还遇到问题,建议提供更多的代码或相关配置信息,以便更准确地帮助你解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值