Skip to content

Mentions 提及 ​

在文本域中输入触发前缀(默认 @)唤起候选项下拉,选中后插入对应值。适合 @ 好友、引用成员等场景。

基础用法 ​

vue
<template>
  <KbMentions
    v-model="text"
    :options="options"
    placeholder="输入 @ 唤起提及"
    @select="onSelect"
  />
</template>

<script setup>
import { ref } from 'vue'
const text = ref('')
const options = [
  { value: 'afc163' },
  { value: 'zombiej', label: '僵尸' },
  { value: 'admin', disabled: true },
]
function onSelect(option, prefix) {
  console.log('选中', option.value, prefix)
}
</script>

自定义前缀 ​

prefix 可传多个字符,例如同时支持 @ 与 # 话题:

vue
<KbMentions :prefix="['@', '#']" :options="options" />

自定义过滤 ​

默认按 label ?? value 包含匹配;传 filterOption 完全接管,传 false 关闭过滤(展示全部候选)。

ts
const filter = (search: string, option: MentionOption) =>
  option.value.toLowerCase().startsWith(search.toLowerCase())

API ​

Props ​

属性类型默认值说明
modelValuestring''绑定文本(v-model)
optionsMentionOption[][]候选项
prefixstring | string[]'@'触发前缀,可传多个
rowsnumber2文本域行数
placeholderstring—占位提示
disabledbooleanfalse禁用
readonlybooleanfalse只读
filterOption(search, option) => boolean | false包含匹配自定义过滤;false 关闭
notFoundContentstring—无匹配时的文案

MentionOption ​

属性类型说明
valuestring插入文本时使用的值
labelstring展示文案,缺省用 value
disabledboolean禁用该候选

事件 ​

事件参数说明
update:modelValuestring文本变化
select(option, prefix)选中候选项
search(text, prefix)搜索词变化