Vue如何使用引用库,调用引用库的方法怎样做
Admin 2022-06-15 群英技术资讯 1156 次浏览
今天小编跟大家讲解下有关“Vue如何使用引用库,调用引用库的方法怎样做”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。monaco-editor-vue的官方源码如下
Index.js
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
function noop() { }
export { monaco };
export default {
name: 'MonacoEditor',
props: {
diffEditor: { type: Boolean, default: false }, //是否使用diff模式
width: {type: [String, Number], default: '100%'},
height: {type: [String, Number], default: '100%'},
original: String, //只有在diff模式下有效
value: String,
language: {type: String, default: 'javascript'},
theme: {type: String, default: 'vs'},
options: {type: Object, default() {return {};}},
editorMounted: {type: Function, default: noop},
editorBeforeMount: {type: Function, default: noop}
},
watch: {
options: {
deep: true,
handler(options) {
this.editor && this.editor.updateOptions(options);
}
},
value() {
this.editor && this.value !== this._getValue() && this._setValue(this.value);
},
language() {
if(!this.editor) return;
if(this.diffEditor){ //diff模式下更新language
const { original, modified } = this.editor.getModel();
monaco.editor.setModelLanguage(original, this.language);
monaco.editor.setModelLanguage(modified, this.language);
}else
monaco.editor.setModelLanguage(this.editor.getModel(), this.language);
},
theme() {
this.editor && monaco.editor.setTheme(this.theme);
},
style() {
this.editor && this.$nextTick(() => {
this.editor.layout();
});
}
},
computed: {
style() {
return {
width: !/^\d+$/.test(this.width) ? this.width : `${this.width}px`,
height: !/^\d+$/.test(this.height) ? this.height : `${this.height}px`
}
}
},
mounted () {
this.initMonaco();
},
beforeDestroy() {
this.editor && this.editor.dispose();
},
render (h) {
return (
<div class="monaco_editor_container" style={this.style}></div>
);
},
methods: {
initMonaco() {
const { value, language, theme, options } = this;
Object.assign(options, this._editorBeforeMount()); //编辑器初始化前
this.editor = monaco.editor[this.diffEditor ? 'createDiffEditor' : 'create'](this.$el, {
value: value,
language: language,
theme: theme,
...options
});
this.diffEditor && this._setModel(this.value, this.original);
this._editorMounted(this.editor); //编辑器初始化后
},
_getEditor() {
if(!this.editor) return null;
return this.diffEditor ? this.editor.modifiedEditor : this.editor;
},
_setModel(value, original) { //diff模式下设置model
const { language } = this;
const originalModel = monaco.editor.createModel(original, language);
const modifiedModel = monaco.editor.createModel(value, language);
this.editor.setModel({
original: originalModel,
modified: modifiedModel
});
},
_setValue(value) {
let editor = this._getEditor();
if(editor) return editor.setValue(value);
},
_getValue() {
let editor = this._getEditor();
if(!editor) return '';
return editor.getValue();
},
_editorBeforeMount() {
const options = this.editorBeforeMount(monaco);
return options || {};
},
_editorMounted(editor) {
this.editorMounted(editor, monaco);
if(this.diffEditor){
editor.onDidUpdateDiff((event) => {
const value = this._getValue();
this._emitChange(value, event);
});
}else{
editor.onDidChangeModelContent(event => {
const value = this._getValue();
this._emitChange(value, event);
});
}
},
_emitChange(value, event) {
this.$emit('change', value, event);
this.$emit('input', value);
}
}
}
使用了vue想使用如上库中的_getValue方法怎么调呢?
定义ref=“”,使用this.$refs.exampleEditor._setValue('')
参考如下代码
test.vue
<template>
<div>
<MonacoEditor ref="exampleEditor" width="100%" height="300" theme="vs-dark" language="javascript" :options="options" @change="codeInput" />
</div>
</template>
<script>
import MonacoEditor from 'monaco-editor-vue'
export default {
components: {
MonacoEditor
},
data() {
return {
}
},
beforeCreate() {
},
mounted() {
},
methods: {
this.$refs.exampleEditor._setValue('')
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录效果图实现流程主要代码效果图话不多说,直接上效果:实现流程主要流程为:1. 根据效果图,构建静态页面2. 获取元素(自带的属性)3. 绑定事件4. 事件触发之后4.1 所有的li元素
文本主要给大家介绍js中闭包的使用场景。首先闭包就是能够读取其他函数内部变量的函数。因此在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成 “定义在一个函数内部的函”。js中闭包的优点有保护函数内的变量安全、方便调用上下文的局部变量、加强封装性等等。下面我们就来具体看看js闭包的使用场景有哪些。
javascript求pi五次方的方法:1、利用Math对象的“PI”属性获取pi(圆周率)的值;2、使用Math对象的pow()方法计算并返回pi五次方的值,语法“Math.pow(Math.PI,5)”。
之前我们了解了很多样式的菜单,例如下拉式菜单、悬浮式菜单等等,今天我们来了解一下堆叠式菜单,这篇文就主要给大家分享用jquery插件实现堆叠式菜单效果,下文代码有一定的参考价值,感兴趣的朋友可以参考。
这篇文章我们来了解JS数组的深复制和浅复制的相关内容,很多新手不是很理解深复制和浅复制究竟是什么,因此本文就给大家来介绍一下,下文有很详细的介绍,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008