2016-09-01 4 views
0

사용자가 일부 JSON을 삽입하는 방법으로 모나코 편집기 (https://github.com/Microsoft/monaco-editor)를 구현했습니다.모나코 편집기 상태 재설정

사용자가 "게시"버튼을 클릭하면 편집기가 활성화됩니다. 문제는 에디터가 스위치 기능 안에서 가능하다는 것입니다. 일단 버튼이 한번 클릭되면 클라이언트는 같은 버튼을 다시 클릭하면 편집기가 첫 번째로 생성 된 편집기 아래에 추가됩니다. 에디터를 "재설정"할 수있는 방법이 있습니까? 실제로 추가하지는 않겠지 만 새로운 것을 만들거나 이미 생성 한 것을 사용 하시겠습니까?

다음은 현재 코드입니다. 하나 작성하거나 새,이 스위치 케이스가 입력 될 때마다 확인이있는 경우

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는 avalable 있습니다.

+0

해결책을 찾았습니다. 그리고 그때까지는 monaco.editor를 사용할 수 없다는 것을 알아 냈으므로 CodeMirror로 변경했습니다. 귀하의 답변을 주셔서 감사합니다 - 내가 기억하는 그 모습은 아주 유효한 해결책처럼 보입니다 :-) – Daniel

관련 문제