首页 > 解决方案 > 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:$textattribute:mention一直得到不同的结果。

我没有使用该事件,而是尝试使用 DowncastWriter 插入 TextNode ,但这会产生view-writer-invalid-position-container错误(当使用范围中的起始位置时)。

一直在挖掘 downcast API 参考,但似乎无法弄清楚:如何在不创建实际提及模型的情况下将自动完成列表中的文本推送回提及查询?

标签: ckeditorckeditor5

解决方案


推荐阅读