我想获得CodeMirror的一个实例(它绑定到textarea'#code')。从onclick-event我想要为CodeMirror实例的当前值添加一个值。怎么能实现这一目标?从文档中我似乎无法找到任何实例并将其绑定到javascript中的loca var。
答案 0 :(得分:47)
我发现elsewhere的另一种方法如下:
//Get a reference to the CodeMirror editor
var editor = document.querySelector('.CodeMirror').CodeMirror;
当您动态创建CodeMirror实例或用CodeMirror实例替换现有DOM元素时,这很有效。
答案 1 :(得分:12)
有人刚刚发布了一个答案,但删除了它。然而,这是一个有效的解决方案。 谢谢!
- 基本上这是他的解决方案:
// create an instance
var editor = CodeMirror.fromTextArea('code');
// store it
$('#code').data('CodeMirrorInstance', editor);
// get it
var myInstance = $('code').data('CodeMirrorInstance');
// from here on the API functions are available to 'myInstance' again.
答案 2 :(得分:1)
您可以找到以<textarea>
开头并移至下一个兄弟的实例。
功能
document.querySelector('#code').nextSibling,
选择
document.querySelector('#code + .CodeMirror'),
功能
$('#code').next('.CodeMirror').get(0),
选择
$('#code + .CodeMirror').get(0)
额外: 涉及clipboard.js的更高级解决方案 - &gt; JSFiddle Demo
// Selector for textarea
var selector = '#code';
$(function() {
var editor = CodeMirror.fromTextArea($(selector).get(0), {
mode: 'javascript',
theme: 'paraiso-dark',
lineNumbers : true
});
editor.setSize(320, 240);
editor.getDoc().setValue(JSON.stringify(getSampleData(), null, 4));
$('#response').text(allEqual([
document.querySelector(selector).nextSibling, // Native - Functional
document.querySelector(selector + ' + .CodeMirror'), // Native - Selector
$(selector).next('.CodeMirror').get(0), // jQuery - Functional
$(selector + ' + .CodeMirror').get(0) // jQuery - Selector
]));
});
function allEqual(arr) {
return arr.every(function(current, index, all) {
return current === all[(index + 1) % all.length];
});
};
// Return sample JSON data.
function getSampleData() {
return [
{ color: "red", value: "#f00" },
{ color: "green", value: "#0f0" },
{ color: "blue", value: "#00f" }
];
}
&#13;
#response { font-weight: bold; }
&#13;
<link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.7.0/codemirror.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.7.0/theme/paraiso-dark.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.7.0/codemirror.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>All equal?: <span id="response"></span></div>
<textarea rows="10" cols="60" id="code"></textarea>
&#13;
答案 3 :(得分:0)
我正在像这样使用Vue CLI 3
,vue-codemirror
组件:
<codemirror id="textarea_editor" v-model="textarea_input" :options="cm_editor_config"></codemirror>
导入codemirror
以在页面内使用:
import { codemirror } from 'vue-codemirror'
import 'codemirror/lib/codemirror.css'
,只需在codemirror
对象内添加components
,然后在data
部分中进行配置:
codemirror_editor: undefined,
cm_editor_config: {
tabSize: 4,
mode: 'application/json',
theme: 'base16-dark',
lineNumbers: true,
// lineWrapping: true,
styleActiveSelected: true,
line: true,
}
并在mounted
的{{1}}生命周期部分初始化对象:
Vue
希望这对很多人有帮助。
答案 4 :(得分:-2)
您只需删除 var :而不是
ORDER BY t1.c, t2.c
只是
var editor = CodeMirror.fromTextArea...
然后编辑器可直接用于其他功能