Ace Editor解绑并重新启动

Ace Editor Unbinding and Re-initiating

我在同一界面中有 2 个 ace 编辑器。内容动态加载到 ace 编辑器中 - 单击即可。

我想清空编辑器以清屏。但是,当我这样做时,后续内容将不会加载到 ace 编辑器中。

# code used to initiate the ace editor
function initAceEditor(){
var editor1 = ace.edit("editor1");
editor1.setTheme("ace/theme/dreamweaver");
document.getElementById('editor1').style.fontSize='14px';
editor1.getSession().setUseWrapMode(true)
editor1.getSession().setMode("ace/mode/html");
});

# code to clear editor div
$('#editor1').empty().attr('class', '');


# I tried the following methods to unbind Ace Editor
ace.edit("editor1").getSession().removeListener('change');

# reinitiated by calling the function
initAceEditor();

但是上面的思路是行不通的。注意我有 2 个编辑器,我对 editor1 和 editor2 使用相同的代码。

感谢任何解决此问题的帮助。

您可以使用setValue命令清除内容。

editor1.setValue("");

您正试图清除此处 div 中存在的所有元素。请改用 setValue。

要取消初始化和重新初始化,您可以销毁您的编辑器实例,这将清理整个编辑器并避免任何内存泄漏,然后调用您的初始化函数。

editor1.destroy();
initAceEditor();

这会破坏您的实例并创建一个新实例。 如果你想删除 DOM 节点和事件监听器,你可以使用:

editor1.container.remove()