繁体   English   中英

重置摩纳哥编辑器状态

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM