<template>
<div class="mirror-content">
<p>请输入:</p>
<textarea ref="textarea"></textarea>
</div>
</template>
<script>
import { onMounted, reactive, ref, toRefs, watch } from 'vue';
import Codemirror from 'codemirror';
import 'codemirror/lib/codemirror.css'
import 'codemirror/mode/sql/sql'
import 'codemirror/addon/lint/lint'
export default {
props: {
modelValue: {
type: String,
default: ''
}
},
setup(props, ctx) {
const textarea = ref("")
const options = {
mode: 'sql',
lineNumbers: true,
}
const state = reactive({
code: props.modelValue
})
let editor;
onMounted(() => {
editor = Codemirror.fromTextArea(textarea.value, options)
editor.setValue(props.modelValue)
editor.setSize(500, 300)
editor.on('change', (editor, changeObj) => {
ctx.emit("update:modelValue", editor.getValue())
})
})
watch(() => props.modelValue, () => {
editor.setValue(props.modelValue)
})
return {
textarea,
...toRefs(state)
}
}
}
</script>
codeMirror 5.65.2 使用
最新推荐文章于 2025-03-26 15:03:07 发布