我正在与 Quill 合作,我正在尝试创建一个自定义印迹,可以在其中嵌套多个该印迹。这样做的目的是我希望仅在某些条件匹配时才显示部分文本,例如 if 语句。嵌套部分是因为可以添加 AND 和 OR 运算符,除了使处理部分更容易,因为我只需要找到父级并迭代子级。
到目前为止,我有以下 Blot 结构:
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 编辑器调用该函数时,它不会嵌套印迹,即使在用户选择中已经存在条件印迹。但如果有不同的印迹,它确实会嵌套它。
在与同事交谈时,他建议我使用 Parchment 提供的功能动态创建印迹create()
,并更改每个印迹的标签名称,从而允许嵌套印迹。我想知道这是否是唯一可能的解决方案,或者是否有另一种方法可以做到这一点。
有没有其他方法可以使用常规的 Quill 方法插入具有相同印迹名称的嵌套印迹?