需求说明
使用MySQL模式的提示,可以提示SQL关键字,但是,往往写SQL时我们需要提示库和表的字段,分析之后发现有addCompleter
方法可以自定义提示,但是在改变库后,以往库的表的提示会存在,需要清除,于是在源码中添加了flag
来判断是否时清除。
改造步骤
- 下载vue2-brace-editor 源码包,进入文件夹,
npm i
下载所需依赖 -
在
Ace.component.vue
文件的 methods方法中添加如下代码setCustomPrompts(flag, data){ let lt = ace.acequire('ace/ext/language_tools') if(flag){ lt.addCompleter({ getCompletions: function(editor, session, pos, prefix, callback){ if(prefix.length === 0){ return callback(null, []); }else { return callback(null, data) } } }) }else{ let {textCompleter, keyWordCompleter, snippetCompleter} = lt; lt.setCompleters([textCompleter, keyWordCompleter, snippetCompleter]) } },
- flag 是表示是否设置,为
false
时会重置编辑框的提示 -
data 是设置的数据,下文查看具体用法
-
完成后,使用打包指令输出对应的包
"scripts": { "build": "yarn run build:lib && yarn run build:umd && yarn run build:umd:min", "build:lib": "babel src --out-dir lib", "build:umd": "webpack src/index.js dist/vue-ace.js --config webpack.config.dev.js", "build:umd:min": "webpack src/index.js dist/vue-ace.min.js --config webpack.config.prod.js", "clean": "rimraf lib dist" },
-
使用方法
- 引入打包文件后,具体封装可参考百度
-
在封装的组件上可通过
this.$refs['你的编辑器ref']
获取实例调用setCustomPrompts
传入参数设置或清除(flag 为 false 时为清除);如this.$refs['MyAceEditor'].setCustomPrompts(flag, data);
-
data的格式如下
let data = [ {meta: '提示字段', caption: '提示字段', value: '提示字段', score: 5}, ]
- score 表示权重,为数值,越大提示越靠前
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。