更改ShareJS中的默认文本


Change default text in ShareJS

情况:我有一个网站,用PHP写的&mySQL用于创建/共享文档。现在我需要添加一些协作功能的网站,所以决定使用shareJS(使用默认的ace编辑器)。

几乎所有的工作都很好,但我不能在编辑器中设置默认文本,因为它从默认的redis数据库中获取数据。是的,我可以尝试重写数据在redis数据库或改变我的mySQL数据库,但我想逃避它。

在客户端部分,我尝试删除所有文本并设置新的

// delete text which come from node server
var nodeText = doc.getText();
var nodeTextRows = nodeText.split("'n");
nodeTextRows.forEach(function(text, i, arr) {
    var locIDX = i+1;
    doc.del(locIDX, text.length);
    console.log("Delete: " + locIDX + " " + text + " " + text.length);
});

// insert text from DB into editor
var textRows = text.split("'n");
textRows.forEach(function(text, i, arr) {
    var locIDX = i+1;
    doc.insert(locIDX, text);
    console.log("Insert: " + locIDX + " " + text);
});

但是它不起作用,因为这个shareJS代码

if editorText != otText
    console.error "Text does not match!"
    console.error "editor: #{editorText}"
    console.error "ot: #{otText}"
    # Should probably also replace the editor text with the doc snapshot.
, 0

所以我的错误信息是:文本不匹配编辑器:{空字符串}{一些垃圾,由输入和上面的代码}

也许我用错了方法

这是我在源代码中发现的未公开的函数:

doc.attach_ace(editor, true);

第二个变量表示保留编辑器内容,以便您可以在编辑器中设置自己的文本。

希望对大家有帮助。