[英]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.