簡體   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