我正在尝试在 monaco 编辑器上设置自定义主题,但是当我更改要创建的自定义主题的颜色(基于现有主题)时,更改不适用,我使用 setTheme 来应用主题但是每次我这样做我都会收到一个错误,说 setTheme 不是一个函数。
我使用了操场上反映的代码来让它工作,有人知道是否有与此相关的问题吗?以及如何解决?我的版本目前是 10.01
我正在尝试在 monaco 编辑器上设置自定义主题,但是当我更改要创建的自定义主题的颜色(基于现有主题)时,更改不适用,我使用 setTheme 来应用主题但是每次我这样做我都会收到一个错误,说 setTheme 不是一个函数。
我使用了操场上反映的代码来让它工作,有人知道是否有与此相关的问题吗?以及如何解决?我的版本目前是 10.01
好的,所以我遇到了同样的问题,并找到了@mhuss 的正确答案。
但在他的整个回答中……真正的交易在于细节。仔细看。它是:
monaco.editor.setTheme('vs');
。重点是摩纳哥!
一开始我尝试了以下方法,因为这样做对我来说真的很有意义:
var myEditor = monaco.editor.create( ... blah blah ...);
...
myEditor.setTheme('vs-dark');
我试图更新实例,但似乎主题是全局设置的。
我有一段时间遇到同样的问题,但设法让它工作。
我使用以下选项初始化了我的 monaco 编辑器:
editor = monaco.editor.create(document.getElementById("text-log-container"), {
language: "javascript",
value: editorData,
scrollbar: {
vertical: 'auto',
horizontal: 'auto'
},
theme: "vs-dark",
automaticLayout: true,
readOnly: true
});
然后在函数或即时窗口中:
monaco.editor.setTheme('vs')
如果目标是动态更新现有主题,它实际上就像“重新定义”主题一样简单:
monaco.editor.defineTheme('myCoolTheme', {...})
然后摩纳哥将更新主题定义。如果这个主题已经是编辑器的活动主题,它也会直接将新的主题设置应用到编辑器。
另请参阅https://microsoft.github.io/monaco-editor/api/modules/monaco.editor.html#definetheme
在创建使用时使用默认主题之一:
this.editor = monaco.editor.create(myRef, {
language: languageId,
minimap: { enabled: false },
autoIndent: 'none',
automaticLayout: true,
theme: 'vs-dark' // this, this line here! (other default options are: 'vs' and 'hc-black')
});
事后设置主题(如果你真的需要设置一个 3 秒的超时来像我一样看到主题的变化)这样做:
this.editor = monaco.editor.create(myRef, {
language: languageId,
minimap: { enabled: false },
autoIndent: 'none',
automaticLayout: true // note the lack of theme property in the call to create
});
setTimeout(() => {
monaco.editor.setTheme('vs-dark');
}, 2999); // because 3 seconds turned out to be too long for me :p
你也可以同时做——从黑暗开始,然后转向光明:
this.editor = monaco.editor.create(myRef, {
language: languageId,
minimap: { enabled: false },
autoIndent: 'none',
automaticLayout: true,
theme: 'vs-dark'
});
setTimeout(() => {
monaco.editor.setTheme('vs');
}, 2998);