Я работаю с Quill и пытаюсь создать пользовательский блот, в который можно было бы вложить несколько таких блотов. Цель этого состоит в том, чтобы я хотел, чтобы части текста отображались только при соблюдении определенных условий, например, в операторе if. Вложенность заключается в том, что было бы возможно добавить операторы AND и OR, кроме того, чтобы упростить поворот обрабатывающей части, поскольку мне нужно было бы только найти родителя и выполнить итерации потомков.
Пока у меня есть следующая структура блоттинга:
class ConditionBlot extends Inline {
static create(value) {
let node = super.create();
node.setAttribute('idCondition', value.idCondition);
node.setAttribute('clause', value.clause);
node.setAttribute('color', value.color);
node.setAttribute('idConditionBox', value.idConditionBox);
return node;
}
static formats(node) {
return {
idCondition: node.getAttribute('idCondition'),
clause: node.getAttribute('clause'),
color: node.getAttribute('color'),
idConditionBox: node.getAttribute('idConditionBox')
};
}
}
ConditionBlot.blotName = 'condition';
ConditionBlot.tagName = 'condition';
Проблема в том, что когда я вызываю функцию formatText()
из редактора Quill, она не вкладывает блот,хотя в выборе пользователя уже есть условие блот. Но если есть другой блот, он его вкладывает.
Во время разговора с коллегой он предложил мне создать блоты динамически, используя функцию create()
, предоставляемую пергаментом, и изменив имя тега длякаждое пятно, таким образом позволяя вкладывать пятна. Мне интересно, если это единственно возможное решение или есть ли другой способ, которым я могу сделать это.
Есть ли другой способ вставить вложенные блоты с тем же blotName, используя обычные методы Quill?