ユーザーが JSON を挿入する方法として、Monaco エディター ( https://github.com/Microsoft/monaco-editor ) を実装しました。
ユーザーが「投稿」ボタンをクリックすると、エディターが有効になります。問題は、スイッチ関数内でエディターが有効になっていることです。したがって、ボタンが 1 回クリックされると、クライアントが同じボタンをもう一度クリックすると、エディタは最初に作成されたエディタの下に追加します。エディターを「リセット」する方法はありますか?実際には追加されませんが、代わりに新しいものを作成するか、既に作成されたものを使用しますか?
これが私の現在のコードです。
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'), {})
、作成済みのものがある場合は同じものを使用するか、このスイッチケースが入力されるたびに新しいものを作成する必要があるため、既に作成されたものに追加されません。