Javascript 重置编辑器状态

Javascript 重置编辑器状态,javascript,monaco-editor,Javascript,Monaco Editor,我已经实现了Monaco编辑器()作为用户插入一些JSON的一种方式 一旦用户单击“post”按钮,我就启用编辑器。问题是,编辑器是在开关函数中启用的。因此,一旦按钮被单击一次,如果客户端再次单击同一按钮,编辑器将像追加一样位于第一个创建的编辑器下方。有没有办法“重置”编辑器,这样它就不会实际附加,而是创建一个新编辑器,或者使用已经创建的编辑器 这是我目前的代码 require.config({ paths: { 'vs': '/scripts/monaco-editor/min/vs' } }

我已经实现了Monaco编辑器()作为用户插入一些JSON的一种方式

一旦用户单击“post”按钮,我就启用编辑器。问题是,编辑器是在开关函数中启用的。因此,一旦按钮被单击一次,如果客户端再次单击同一按钮,编辑器将像追加一样位于第一个创建的编辑器下方。有没有办法“重置”编辑器,这样它就不会实际附加,而是创建一个新编辑器,或者使用已经创建的编辑器

这是我目前的代码

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'),{})
在每次输入此开关案例时,使用已经创建的相同案例,或者创建一个新案例,这样它就不会在已经创建的案例下面追加

您应该在switch函数外创建代码编辑器。 在你的功能中,你应该只改变你的模型

所以在
开关()之前

window.editor = monaco.editor.create(document.getElementById('codeEditor'), {
                    value: '',
                    language: 'json',
                    theme: 'vs-dark',
                    scrollBeyondLastLine: false,
                    renderWhitespace: true
                });
然后在
开关()内


API是可用的。

您应该在switch函数之外创建代码编辑器。 在你的功能中,你应该只改变你的模型

所以在
开关()之前

window.editor = monaco.editor.create(document.getElementById('codeEditor'), {
                    value: '',
                    language: 'json',
                    theme: 'vs-dark',
                    scrollBeyondLastLine: false,
                    renderWhitespace: true
                });
然后在
开关()内


API是可用的。

我找到了一个解决方案,并认为我当时无论如何都不能使用monaco.editor,所以我改为CodeMirror。不过,感谢您的回复——据我所知,这看起来是一个非常有效的解决方案:-)我找到了一个解决方案,并认为我当时无法使用monaco.editor,所以我改为CodeMirror。不过,感谢您的回复——据我所知,这似乎是一个非常有效的解决方案:-)