繁体   English   中英

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

[英]Mirroring with Ace Editor. How to Remove Text of Mirrored Editor

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

这是我到目前为止的代码。

      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 Class。 昨晚我想出了这个办法,但直到今天我才能将其发布为答案。

好吧,我想我终于明白了。 这是用于档案的。 我不确定这是否是最有效的方法,但我只是尝试在左侧编辑器中发送所有文本,然后完全替换右侧编辑器中的所有代码,而不是试图在右侧编辑器中微妙地替换代码。 似乎工作得很好。

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;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM