我正在使用Codemirror v3.16,我正在试图弄清楚如何杀死我的代码镜像实例?基本上,当textarea在我的页面上的模态中打开时,会触发codemirror。关闭这个模态,我需要杀死实例,否则当我重新打开模态时,我得到两个textareas。
有人可以帮忙吗?
答案 0 :(得分:9)
如果CodeMirror实例是使用CodeMirror.fromTextArea
创建的,则可以使用其toTextArea
方法将当前内容复制到其“镜像”文本区域并删除实例。
假设您的CM实例的ID为“CMEditor”:
CM = document.getElementById('CMEditor');
CM.CodeMirror.toTextArea();
或者,您可以在模态之外实例化CM实例,只需在模态打开时隐藏并显示它。
答案 1 :(得分:8)
当从DOM中删除CodeMirror(并且你杀死了JavaScript可能持有的所有对它的现有引用)时,它将被垃圾收集。没有明确的“杀戮”方法,你只是停止引用它。
答案 2 :(得分:6)
上面的答案仅适用于textarea顶部的CM,但并非总是如此。这样更好:
cm.setOption("mode", "text/x-csrc");
cm.getWrapperElement().parentNode.removeChild(cm.getWrapperElement());
cm=null;
答案 3 :(得分:4)
版本5.3或05/2015更新
CM = document.getElementById('CMEditor');
CM.CodeMirror.toTextArea(); // is not working
CM.toTextArea(); // is making the magic happen
答案 4 :(得分:1)
我已经添加了上面的代码,以便在关闭模式时运行,但是它表示--- cmeditor.toTextArea不是函数
$("body").on("hidden.bs.modal", ".modal", function()
{
$(this).removeData("bs.modal");
cmeditor = document.getElementById("email_template_text");
cmeditor.toTextArea();
});