JavaScript / CodeMirror - 刷新文本区域

13

如何使用CodeMirror 2的刷新功能?

refresh()

如果您的代码有所更改会导致编辑器元素的大小发生变化(窗口调整大小已被监听),或取消隐藏,那么建议在后面调用该方法以确保CodeMirror仍然看起来符合预期。

我想在链接被点击后刷新所有文本区域

我尝试过:

  $('.CodeMirror').each(function(){
    getElementById($(this).attr('id')).refresh();
  });

但它不起作用....


http://stackoverflow.com/questions/40512977/codemirror-horizontal-split-view-and-resize-with-mouse-drag-html-live-editor - STEN
2个回答

23
当您实例化CodeMirror实例时,它被放置在包装器div上作为属性。
$('.CodeMirror').each(function(i, el){
    el.CodeMirror.refresh();
});

上面的代码片段并不会重新创建编辑器,而是使用现有的编辑器。


有没有办法决定我选择了哪个CodeMirror元素,例如我能选择单个的CodeMirror字段吗?el似乎不存储任何名称数据。用这种方式选择CodeMirrors很好,因为它不需要(全局)存储Codefields以输入新文本。 - lakerz
我真是太蠢了 - 当然我可以预先选择包含的 div,然后查找 .CodeMirror。但如果我知道我只会选择一个,那么 each 是正确的函数吗?还是有其他更好的选择? - lakerz
使用each。你的单个选择只是选择多个元素的特殊情况。 - Jonathan Schneider

9

刷新方法(就像所有其他CodeMirror方法一样)不在DOM节点上,而是在创建编辑器时返回的实例对象上(通过调用CodeMirror或CodeMirror.fromTextArea)。因此,您需要将它们存储在某个地方才能使其工作。


谢谢,我将所有的CodeMirror实例存储在一个数组中,然后对每个实例使用refresh()进行迭代。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接