javascript - 如何创建具有相同标签名称的嵌套内联印迹?
问题描述
我正在与 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 方法插入具有相同印迹名称的嵌套印迹?
解决方案
推荐阅读
- postgresql - 如何在 Postgres 中完全禁用`client_min_messages`?
- postgresql - 可以使用 barman 设置 postgresql 流复制吗?
- vue.js - Vue - 表过滤器的性能问题?
- javascript - 我需要在两个不同的 DIV 中使用相同的 ID 内容。我该怎么做?
- html - 猫头鹰轮播版本 1 在最后一项后自动播放/循环
- .net - 无法复制文件 deps.json,因为找不到它。Microsoft.Common.CurrentVersion.targets 4919
- reactjs - 如何检查密码是否与 yup 匹配
- reactjs - ReactJS - 如何在将数据发布到数据库后重新渲染功能组件
- node.js - 如何从 salesforce 获取元数据并使用该元数据(列名)在 postgresql 中创建表
- python - 循环遍历特定(比如前 3 个)值的列表,然后再次循环下一个(下 3 个)值并在 django 模板中迭代直到结束