ckeditor - MentionPlugin - 使用向下转换扩展自动完成查询
问题描述
我正在使用 CKEditors MentionPlugin 创建一个两步过程:
首先,当用户键入触发标记 ( @
) 时,它会给出对象类型的自动完成列表。当用户选择一种类型时,它会被放入当前的“搜索”查询中。
其次,当设置对象类型(例如@PERSON:
)时,它开始为给定类型提供自动完成的结果列表。当用户选择一个项目时,会创建提及标签。
我目前正在努力使第一步正常工作-将现有查询作为文本插入并重新触发提要搜索。
迄今为止最好的结果是对attribute:mention
. 当我的正则表达式通过时,我单独使用它并防止事件传播到内置插件向下转换。但它仍然有自己的问题:
- 它仍然被创建为提及模型(但不是提及元素)
- 它添加了一个尾随空格
- 我似乎无法重新触发自动完成列表提要搜索
当前最佳结果的代码:
editor.conversion.for('downcast').add((dispatcher) => {
dispatcher.on('attribute:mention', (evt, data, conversionApi) => {
if (data.attributeKey === 'mention' && /^@[A-Z_]+:$/.test(data.item.data)) {
evt.stop();
}
}, { priority: 'highest' });
});
我已经尝试了不同的向下转换组合,insert:$text
但attribute:mention
一直得到不同的结果。
我没有使用该事件,而是尝试使用 DowncastWriter 插入 TextNode ,但这会产生view-writer-invalid-position-container
错误(当使用范围中的起始位置时)。
一直在挖掘 downcast API 参考,但似乎无法弄清楚:如何在不创建实际提及模型的情况下将自动完成列表中的文本推送回提及查询?
解决方案
推荐阅读
- r - R动作按钮和eventReactive不起作用
- git - 我正在使用 git lab api 但我不知道如何请求 BOOLEAN 类型值
- c# - 在 C# 中获取节点 XML
- ios - iOS是否允许将用户重定向到网站进行付款?
- conditional-statements - 如果购物篮中有 X 或 Y 类别的产品,则在结帐时显示消息
- windows - 允许多个进程共享一个 DLL
- android - FIDO2 MAKE_CREDENTIAL 响应问题
- amp-html - 如何制作“根据输入字符串上的get api调用检索的数据显示动态选项列表的搜索框”,如amp邮件中的select2
- flutter - 当我设置超时持续时间时,未处理的套接字异常没有互联网连接
- flutter - 类似于 dropDownMenuButton 的弹出效果