多个 Codemirror 实例

Multiple Codemirror instances

我可以创建和显示多个动态代码镜像实例,但我不能用下面的代码引用它们。 认为问题是我需要创建一个动态函数名。 (这里不是 100% 了解如何操作)

var function (somefilename, xml){

var instanceName = somefilename + 'Editor';

require([
      'codemirror/lib/codemirror','codemirror/mode/xml/xml', 
      'codemirror/addon/search/search'
], function(CodeMirror) {
        instanceName = CodeMirror.fromTextArea(document.getElementById(somefilename + 'xml'), {
            lineNumbers: true,
            mode: 'xml'
        });
        instanceName.setValue(xml);
        instanceName.focus();
    });

};

我实际上是在以错误的方式解决这个问题,应该一直使用一个对象来存储所述多个实例。这当然让我能够引用任何存储的记录。

希望这对以后的人有所帮助!

//Create your object to store multiple instances of CodeMirror
var cmInstances = {}

function createInstance(someId) {

在我的例子中,我将使用 requirejs 来加载 'on demand'

require([
  'codemirror/lib/codemirror', 'codemirror/mode/xml/xml',
  'codemirror/addon/search/search'
], function(CodeMirror) {

所以我在下面所做的是在我的对象中创建一个 Codemirror 对象的实例。这实质上是我之前在函数中传递的 ID 的关键(即:'someId)。同样在我调用下面的函数之前,我有一个先前的函数创建了一个 'textarea',我已经将它注入到名为“#someID_xml”的页面中。因此 getElementByID

的参考
  cmInstances[someId] = CodeMirror.fromTextArea(document.getElementById(someId + '_xml'), {
    lineNumbers: true,
    mode: 'xml'
  });
});
};