2016-09-01 13 views
0

私はいくつかのJSONを挿入する方法としてMonacoエディタ(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'), {})をしたいので、それは、(1怒鳴る追加されません。 s)がすでに作成されています。

答えて

0

スイッチ機能の外側にモナココードエディタを作成する必要があります。 機能の中でモデルを変更する必要があります。 switch()

window.editor.getModel(). setValue(jsonObject); 

のAPI内部switch()機能する前に

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

、その後はhere有ります。

+0

私は解決策を見つけましたが、とにかくmonaco.editorを使用できないと考えたので、CodeMirrorに変更しました。あなたの応答に感謝 - 私は非常に有効なソリューションのように見える覚えているから:-) – Daniel