Я начинаю разбираться с quill.js - я хотел бы иметь возможность создать пользовательский блот с предварительно заданным содержимым, но которое я могу изменить .. Я выяснил, как создать блочный встраиваемый блот из руководства по клонированию среднего размера , но я заметил, что созданный узел не фиксируется в дельта-содержимом - я установил некоторый текст внутри стилизованного div, и я хотел бы сохранить эти изменения ... Я также хотел бы использовать этот процесс для таких вещей, как динамические подписи ... важно, что я могу сохранить дельту. node.innerText = 'test test test' устанавливает начальное содержимое нормально, но изменения не привязаны к дельте.
Есть ли способ вложить кляксы в блоки? или можно как-нибудь связать содержимое блота дельтой? был бы очень признателен за любой полезный пример кода. Спасибо.
class EditModuleBlot extends BlockEmbed {
static create(value) {
let node = super.create();
node.setAttribute('style', value.style);
node.innerText = 'test test test';
return node;
}
static value(node) {
return {
style: node.getAttribute('style')
};
}
}
EditModuleBlot.blotName = 'editmodule';
EditModuleBlot.tagName = 'div';
и это мой метод вызова Vue.js:
clickAddModule() {
let range = this.quillInstance.getSelection(true);
this.quillInstance.insertText(range.index, '\n', Quill.sources.USER);
this.quillInstance.insertEmbed(range.index + 1, 'editmodule', {
style: 'padding:10px;border: 2px dashed black;'
}, Quill.sources.USER);
this.quillInstance.setSelection(range.index + 2, Quill.sources.SILENT);
}
Дельта json не захватывает div innerText:
{
"insert": {
"editmodule": {
"style": "padding:10px;border: 2px dashed black;"
}
}
},
* update * не используйте quill для расширений блоков, он не обрабатывает их должным образом --- используйте Slate.js, Prose Mirror или CkEditor