私は一日中この問題に悩まされてきました。ブラウザに 2 つの Ace Editor を並べて作成しました。右側のエディターは読み取り専用になり、左側のエディターをミラーリングするために使用されます。次に、いくつかの 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
}
});
何か案は?
本当にありがとう!