2016-09-01 7 views
0

Я внедрил редактор Monaco (https://github.com/Microsoft/monaco-editor) в качестве способа для пользователя вставить некоторый JSON.Сброс состояния редактора Monaco

Включить редактор, как только пользователь нажмет кнопку «отправить». Проблема заключается в том, что редактор включен внутри функции переключения. Поэтому, как только кнопка была нажата один раз, редактор будет добавляться под первым созданным редактором, если клиент снова нажмет на эту кнопку. Есть ли способ «перезагрузить» редактор, поэтому он обычно не добавляется, а вместо этого либо создает новый, либо использует уже созданный?

Вот мой текущий код.

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'), {}) либо использовать тот же уже создан, если есть один создан, или сделать новый, каждый раз, когда этот переключатель случаев вводится, поэтому он не добавляет пыльник одного (s) уже создано.

ответ

0

Вы должны создать редактор кода из Монако вне зависимости от функции вашего переключателя. Внутри вашей функции вы должны изменить свою модель.

Так перед функцией 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, являются Имеющийся here.

+0

Я нашел решение и понял, что в любом случае я не мог использовать monaco.editor, поэтому я перешел на CodeMirror. Спасибо за ваш ответ, хотя - из того, что я помню, это похоже на очень правильное решение :-) – Daniel

Смежные вопросы