0

ユーザーが 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'), {})、作成済みのものがある場合は同じものを使用するか、このスイッチケースが入力されるたびに新しいものを作成する必要があるため、既に作成されたものに追加されません。

4

1 に答える 1

2

スイッチ関数の外側にモナコ コード エディターを作成する必要があります。関数内では、モデルのみを変更する必要があります。

だから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 はこちらから入手できます。

于 2016-09-07T00:35:36.033 に答える