[英]Reset Monaco Editor state
我已经实现了Monaco编辑器( https://github.com/Microsoft/monaco-editor ),作为用户插入JSON的一种方式。
用户单击“发布”按钮后,我将启用编辑器。 问题是,在开关功能内部启用了编辑器。 因此,一旦单击按钮一次,如果客户端再次单击相同的按钮,编辑器将喜欢追加到第一个创建的编辑器下面。 有什么方法可以“重置”编辑器,因此它实际上不会追加,而只是制作一个新的或使用已经创建的编辑器?
这是我当前的代码。
require.config({ paths: { 'vs': '/scripts/monaco-editor/min/vs' } });
switch (id) {
case 'post':
$('#httpMethodGet').css('display', 'none');
$('#httpMethodPost').show();
require(['vs/editor/editor.main'], function () {
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
schemas: [{
uri: "http://myserver/bar-schema.json",
schema: {
type: "object",
properties: {
q1: {
enum: ["x1", "x2"]
}
}
}
}]
});
var jsonObject = [
'{',
' "$schema": "http://myserver/foo-schema.json"',
"}"
].join('\n');
window.editor = monaco.editor.create(document.getElementById('codeEditor'), {
value: jsonObject,
language: 'json',
theme: 'vs-dark',
scrollBeyondLastLine: false,
renderWhitespace: true
});
});
break;
因此,我希望window.editor = monaco.editor.create(document.getElementById('codeEditor'), {})
使用已创建的相同window.editor = monaco.editor.create(document.getElementById('codeEditor'), {})
如果已创建),或者每次进行此切换时都使用一个新文件输入了case,因此不会在下面附加已经创建的案例。
您应该在切换功能之外创建monaco代码编辑器。 在函数内部,您仅应更改模型。
所以在switch()
函数之前
window.editor = monaco.editor.create(document.getElementById('codeEditor'), {
value: '',
language: 'json',
theme: 'vs-dark',
scrollBeyondLastLine: false,
renderWhitespace: true
});
然后在switch()
内部
window.editor.getModel(). setValue(jsonObject);
API在这里可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.