Ситуация: у меня есть сайт, написанный на PHP & MySQL для создания / обмена документами. Теперь мне нужно добавить некоторые функции совместной работы на веб-сайт, поэтому я решил использовать shareJS (используя редактор по умолчанию).
Почти все работает нормально, но я не могу установить текст по умолчанию в редакторе, потому что он берет данные из базы данных Redis по умолчанию. Да, я могу попытаться переписать данные в Redis DB или изменить их с помощью MySQL DB, но я хочу избежать этого.
В клиентской части я пытаюсь удалить весь текст и установить новый
// 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
Итак, мое сообщение об ошибке:
Текст не соответствует
редактор: {пустая строка}
ot: {некоторый мусор, сделанный вводом и кодом выше}
Мэйб, я делаю это неправильно.
Вот недокументированная функция, которую я нашел в исходном коде:
doc.attach_ace(editor, true);
Вторая переменная говорит, чтобы сохранить содержимое редактора, чтобы вы могли установить свой собственный текст в редакторе.
Надеюсь, что это будет полезно.
Других решений пока нет …