首页 > 解决方案 > 如何创建具有相同标签名称的嵌套内联印迹?

问题描述

我正在与 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 方法插入具有相同印迹名称的嵌套印迹?

标签: javascriptquillparchment

解决方案


推荐阅读