Skip to content

Mention 提及

该组件是低代码平台中用于在文本输入过程中提及用户、标签或其他实体的智能输入框,基于 Element Plus 的 <el-mention> 封装,支持自定义触发前缀、动态搜索建议、文本/文本域切换,并深度集成表单容器(<el-form>)的数据绑定与校验体系。

基础属性

属性类型说明
触发字段的前缀 prefixstring触发提及菜单的字符(如 @),必须且只能为 1 个字符(默认 @
拆分提及的字符 splitstring用于结束提及输入并插入空格等分隔符的字符(如空格 ' '),必须且只能为 1 个字符(默认空格)
输入类型 typeenum可选:text(单行文本)、textarea(多行文本域)
文本域高度是否自适应 autosizeboolean仅当输入类型为“文本域”时生效
文本域行数 rowsnumber固定行数,仅当类型为“文本域”且未启用自适应高度时生效
文本域最小行数 minRowsnumber自适应模式下的最小显示行数(仅文本域 + 启用 autosize 时生效)
文本域最大行数 maxRowsnumber自适应模式下的最大显示行数(仅文本域 + 启用 autosize 时生效)
触发搜索函数 searchfunction$args[0] 为用户输入的查询关键词,需返回 { value, label, disabled } 格式的选项数组(支持异步)
是否显示统计字数 showWordLimitboolean需配合最大长度使用
最小长度 minlengthnumber输入内容最小字符数(整数)
最大长度 maxlengthnumber输入内容最大字符数(整数)
是否自动获取焦点 autofocusboolean页面加载时自动聚焦到输入框
输入提示文本 placeholderstring未输入时的占位提示文字
表单项基础配置包含标签宽度、布局控制等通用表单项设置(来自 formItemBaseDefine

高级属性

属性类型说明
表单项高级配置包含字段名(prop)、标签文本(label)等核心绑定配置(来自 formItemAdvDefine

🔧 数据转换说明(关键!)

Mention 组件内部使用 { text: string, mentions: any[] } 作为绑定值,其中:

  • text:用户看到的完整文本(如 "请 @张三 处理");
  • mentions为所选项的 value 数组(如 ['101', '102'])。

若需在表单中分别存储文本和提及 ID,可通过写入和读取函数转换,如下:

✅ 写入函数(propWriteFun

$args[0] 为表单绑定属性,{ text: string, mentions: any[] },返回转换后的写入结果。

js
/** 同步返回结果 */
return {
  content: $args[0].text,          // 纯文本 → 字段 content
  mentioned_user_ids: $args[0].mentions  // 提及的 value 数组 → 字段 mentioned_user_ids
}

$args[1] 为表单数据,将 { content: string, mentioned_user_ids: any[] },返回转换后的读取结果。

✅ 读取函数(propReadFun

js
/** 同步返回结果 */
return {
  text: $args[1].content || '',
  mentions: $args[1].mentioned_user_ids || []
}

事件

事件触发时机说明
change输入内容(含提及项)发生变化时返回最终的字符串值(提及项通常以 prefix + value 形式嵌入文本中)

💡 典型应用场景:评论区 @ 用户、协作文档中提及相关任务、聊天输入框中快速插入联系人等。