获取摩纳哥编辑器的价值
Get the value of Monaco Editor
Microsoft 最近开源了他们的 monaco 编辑器(类似于 ace/codemirror)。
https://github.com/Microsoft/monaco-editor
我在浏览器里已经弄好了运行,但还是想不通如何获取编辑器的当前文本,比如我想保存它。
示例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head>
<body>
<div id="container" style="width:800px;height:600px;border:1px solid grey"></div>
<script src="monaco-editor/min/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
var editor = monaco.editor.create(document.getElementById('container'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
function save() {
// how do I get the value/code inside the editor?
var value = "";
saveValueSomewhere(value);
}
</script>
</body>
</html>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
window.editor = monaco.editor.create(document.getElementById('container'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
function save() {
// get the value of the data
var value = window.editor.getValue()
saveValueSomewhere(value);
}
对我来说,这个 window.editor.getValue()
没有用,但下面的代码有效。
<div id="container" style="width:950px;height:700px;"></div>
<script src="./monaco-editor/dev/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
var editor = monaco.editor.create(document.getElementById('container'), {
value: [
'print "Hello World!"',
'# python'
].join('\n'),
language: 'python',
theme: "vs-dark"
});
function saveI()
{
getVal = editor.getValue()
// get the value of the data
alert(getVal)
}
document.getElementById('container').onclick = saveI;
});
// Themes: vs-dark , hc-black
// language: text/html , javascript
</script>
您可以将 'container' 更改为 'htmlButton',然后在 saveI()
函数中使用 jQuery ajax 保存代码。
编辑器和模型都支持获取内容:
因此只要保留对编辑器或模型的引用就可以查询内容:
var editor = monaco.editor.create(...);
var text = editor.getValue();
或者如果是模型:
var model = monaco.editor.createModel(...);
var text = model.getValue();
如果您有 diff-editor,则无法直接在 编辑器 上访问文本,但您可以在各个模型上访问它们(即通过 IStandaloneDiffEditor.getModel()
):
var diffEditor = monaco.editor.createDiffEditor(...);
var originalText = diffEditor.getModel().original.getValue();
var modifiedText = diffEditor.getModel().modified.getValue();
或通过不同的编辑器 (getModifiedEditor()
and getOriginalEditor()
):
var originalText = diffEditor.getModifiedEditor().getValue();
var modifiedText = diffEditor.getOriginalEditor().getValue();
以防万一您对文本的一部分感兴趣,该模型还支持 getValueInRange()
,它为您提供指定范围内的文本,例如由开始和结束列以及行号分隔:
var editor = monaco.editor.create(...);
var model = editor.getModel();
var partOfTheText = model.getValueInRange({
startLineNumber: 1,
startColumn: 2,
endLineNumber: 3,
endColumn: 10,
})
Microsoft 最近开源了他们的 monaco 编辑器(类似于 ace/codemirror)。
https://github.com/Microsoft/monaco-editor
我在浏览器里已经弄好了运行,但还是想不通如何获取编辑器的当前文本,比如我想保存它。
示例:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head>
<body>
<div id="container" style="width:800px;height:600px;border:1px solid grey"></div>
<script src="monaco-editor/min/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
var editor = monaco.editor.create(document.getElementById('container'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
function save() {
// how do I get the value/code inside the editor?
var value = "";
saveValueSomewhere(value);
}
</script>
</body>
</html>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
window.editor = monaco.editor.create(document.getElementById('container'), {
value: [
'function x() {',
'\tconsole.log("Hello world!");',
'}'
].join('\n'),
language: 'javascript'
});
});
function save() {
// get the value of the data
var value = window.editor.getValue()
saveValueSomewhere(value);
}
对我来说,这个 window.editor.getValue()
没有用,但下面的代码有效。
<div id="container" style="width:950px;height:700px;"></div>
<script src="./monaco-editor/dev/vs/loader.js"></script>
<script>
require.config({ paths: { 'vs': 'monaco-editor/min/vs' }});
require(['vs/editor/editor.main'], function() {
var editor = monaco.editor.create(document.getElementById('container'), {
value: [
'print "Hello World!"',
'# python'
].join('\n'),
language: 'python',
theme: "vs-dark"
});
function saveI()
{
getVal = editor.getValue()
// get the value of the data
alert(getVal)
}
document.getElementById('container').onclick = saveI;
});
// Themes: vs-dark , hc-black
// language: text/html , javascript
</script>
您可以将 'container' 更改为 'htmlButton',然后在 saveI()
函数中使用 jQuery ajax 保存代码。
编辑器和模型都支持获取内容:
因此只要保留对编辑器或模型的引用就可以查询内容:
var editor = monaco.editor.create(...);
var text = editor.getValue();
或者如果是模型:
var model = monaco.editor.createModel(...);
var text = model.getValue();
如果您有 diff-editor,则无法直接在 编辑器 上访问文本,但您可以在各个模型上访问它们(即通过 IStandaloneDiffEditor.getModel()
):
var diffEditor = monaco.editor.createDiffEditor(...);
var originalText = diffEditor.getModel().original.getValue();
var modifiedText = diffEditor.getModel().modified.getValue();
或通过不同的编辑器 (getModifiedEditor()
and getOriginalEditor()
):
var originalText = diffEditor.getModifiedEditor().getValue();
var modifiedText = diffEditor.getOriginalEditor().getValue();
以防万一您对文本的一部分感兴趣,该模型还支持 getValueInRange()
,它为您提供指定范围内的文本,例如由开始和结束列以及行号分隔:
var editor = monaco.editor.create(...);
var model = editor.getModel();
var partOfTheText = model.getValueInRange({
startLineNumber: 1,
startColumn: 2,
endLineNumber: 3,
endColumn: 10,
})