Javascript 使用Ace编辑器进行镜像。如何删除镜像编辑器的文本

Javascript 使用Ace编辑器进行镜像。如何删除镜像编辑器的文本,javascript,ace-editor,Javascript,Ace Editor,我整天都被这个问题困扰着。我在浏览器中并排创建了两个Ace编辑器。右编辑器设置为只读,用于镜像左编辑器。然后我设置了一些Socket.IO事件,基本上将更改从左侧的编辑器发送到右侧的编辑器。除了删除某些内容外,更新正确编辑器的所有功能都工作正常。我觉得我已经尝试了所有的方法,但我能得到的最接近的结果是当我删除左边的某个东西时,它会删除右边左上角的角色 这是我到目前为止的代码 var oEditor = ace.edit("rightEditor"); oEditor.se

我整天都被这个问题困扰着。我在浏览器中并排创建了两个Ace编辑器。右编辑器设置为只读,用于镜像左编辑器。然后我设置了一些Socket.IO事件,基本上将更改从左侧的编辑器发送到右侧的编辑器。除了删除某些内容外,更新正确编辑器的所有功能都工作正常。我觉得我已经尝试了所有的方法,但我能得到的最接近的结果是当我删除左边的某个东西时,它会删除右边左上角的角色

这是我到目前为止的代码

      var oEditor = ace.edit("rightEditor");
      oEditor.setTheme("ace/theme/eclipse");
      oEditor.getSession().setUseWrapMode(true);
      oEditor.getSession().setMode("ace/mode/javascript");
      oEditor.setReadOnly(true);
      var socket = io.connect('http://localhost');
        socket.on('sendFirstChange', function(text){
          oEditor.getSession().setValue(text.val);
        })
        socket.on('sendChange', function (data) {
          if(data.data.action === 'insertText'){
            var start = data.data.range.start.column;
            var end = data.data.range.start.row;
            oEditor.getSession().insert({row: end, column: start},data.data.text);
          } else if(data.data.action === 'removeText'){
            oEditor.remove(); //this is where it's not working
          }
        });
有什么想法吗


非常感谢

您可以从用户处使用mirror类,感谢mirror类。我昨晚就知道了,但直到今天我才把它作为答案发布

我想我终于明白了。这是给档案馆的。我不确定这是否是最有效的方法,但我没有尝试在右侧编辑器中巧妙地替换代码,而是将左侧编辑器中的所有文本发送过来,并完全替换右侧编辑器中的所有代码。看起来效果不错

function(scope, ele, attrs) {   
      var oEditor = ace.edit("rightEditor");
      oEditor.setTheme("ace/theme/eclipse");
      oEditor.getSession().setUseWrapMode(true);
      oEditor.getSession().setMode("ace/mode/javascript");
      oEditor.setReadOnly(true);
      var socket = io.connect('http://localhost');
        socket.on('sendChange', function (data, text) {
          oEditor.getSession().setValue(text);
        });
      scope.oEditor = oEditor;
  }