Ant Design Vue Mentions提及@功能和# 话题功能

Ant Design Vue提供了Mentions组件来实现类似@和#话题的功能,比如在微博和微信群中我们会用@符号去提醒某个人注意,也会用#符号去创建新的话题,Ant Design Vue在1.5.0+新增了此功能,用起来也特别的简单。

基本用法

<template>
  <a-mentions v-model="value" @change="onChange"
   @select="onSelect" style="width:300px">
    <a-mentions-option value="google.com">
      google
    </a-mentions-option>
    <a-mentions-option value="itxst.com">
      itxst
    </a-mentions-option>
    <a-mentions-option value="baidu.com">
      baidu
    </a-mentions-option>
  </a-mentions>
</template>
<script>
export default {
  data() {
    return {
      value: '@itxst.com', //默认值
    };
  },
  methods: {
    //选择事件
    onSelect(option) {
      alert('你选择了:'+JSON.stringify(option.value));
    },
    onChange(value) {
      console.log('Change:', value);
    },
  },
};
</script

在线试一试

异步加载

实现也比较简单,search事件向服务器请求数据,然后更新option即可,加载数据时建议添加一个loading变量来防止数据还没请求完成,用户由输入其他字符造成重复往请求加载的情况。

<template>
  <a-mentions v-model="value" 
  :loading="loading" @search="onSearch" 
  @select="onSelect" style="width:300px">
    <a-mentions-option :value="item.name" v-for="item in options" :key="item.value">
      {{item.value}}
    </a-mentions-option> 
  </a-mentions>
</template>
<script>
export default {
  data() {
    return {
      value: '@itxst.com',
      loading:false,//是否正在加载数据
      options:[]    //数据集
    };
  },
  methods: {
    //选择事件
    onSelect(option) {
      alert('你选择了:'+JSON.stringify(option.value));
    },
    onSearch(keyword) {
       var that=this;
       if(that.loading==true) return;
       that.loading=true;//设置正在加载数据
       setTimeout(function(){
         that.loadData(keyword);
       },2000)
      
    },
    //模拟向服务器请求数据
    loadData(keyword)
    {
      var that=this;
      that.options=[];
      for(var i=0;i<10;i++)
      {
        that.options.push({name:'n'+i,value:i});
      }
      //数据加载完成
      that.loading=false;
    }
  },
};
</script>

自定义触发字符

<template>
  <a-mentions
    placeholder="输入 @或#或$ 试试看"
    :prefix="['@', '#','$']"
    @search="onSearch"
    style="width:300px"
  >
    <a-mentions-option v-for="value in options[prefix] || []" :key="value" :value="value">
      {{ value }}
    </a-mentions-option>
  </a-mentions>
</template>
<script>
//定义数组
const options = {
  '@': ['Bil Gates', 'Linus Torvalds', 'Windows'],
  '#': ['Linux 1.0', 'Linux 2.0', 'Windows 10'],
  '$': ['人民币', '美元', '英镑'],
};
export default {
  data() {
    return {
      prefix: '@',
      options,
    };
  },
  methods: {
    //根据字符更新数组
    onSearch(_, prefix) {
      console.log(_, prefix);
      this.prefix = prefix;
    },
  },
};
</script>

向上展开

只需要把placement属性设置为"top"即可

<template>
  <a-mentions placement="top">
    <a-mentions-option value="1">
      itxst.com
    </a-mentions-option>
    <a-mentions-option value="2">
      google.com
    </a-mentions-option>
    <a-mentions-option value="3">
      baidu.com
    </a-mentions-option>
  </a-mentions>
</template>
快速入门 Button 按钮 Affix 固钉 Breadcrumb 面包屑 Dropdown 下拉菜单 Dropdown 下拉菜单 Dropdown 展开隐藏方法 Dropdown 属性及事件 Menu 导航菜单 Menu 导航菜单 Menu 导航菜单属性及事件 Pagination 分页 Pagination 跳转 Pagination 自定义下拉选项 Pagination 选择每页数量 Pagination 自定义页码文字 Pagination 样式风格 Pagination 属性列表 Pagination 事件列表 Steps 步骤条 Steps 步骤条基本用法 Steps 自定义图标和html Steps 属性列表 AutoComplete 自动填充 AutoComplete 自动完成组件 AutoComplete 前端筛选函数 AutoComplete 自定义选项 AutoComplete Ajax服务器端数据 AutoComplete 查询模式 AutoComplete 属性列表 AutoComplete 事件 AutoComplete 方法列表 Cascader 级联选择 Cascader 基础用法 Cascader 搜索筛选 Cascader ajax服务器端加载 Cascader 样式及自定义图标 Cascader fieldNames 自定义字段 Cascader API属性及事件 Cascader 属性及事件Node.js版 Cascader 属性及事件浏览器版 Checkbox 多选框 Checkbox 多选框用法 Checkbox 自定义布局 Checkbox 全选反选 Checkbox 属性事件列表 DatePicker 日期选择框 DatePicker 日期选择框用法 DatePicker 设置不可选日期 DatePicker 选择时间 DatePicker 设置日期格式 DatePicker 日期范围选择 DatePicker 定制日期单元格 DatePicker 自定义渲染 DatePicker 属性和事件 Input 输入框 Input 输入框用法 Input 密码框 Input 图标 Input 搜索框 Input 格式化提示 Input 属性及事件列表 Input addonAfter属性 InputNumber 数字输入框 InputNumber 数字输入框 InputNumber 属性和事件 Mentions 提及 Mentions提及用法 Mentions 属性和事件 Radio 单选框 Radio 单选框用法 Radio 单选框分组 Radio 按钮样式 Radio 属性事件 Rate 评分组件 Rate 评分组件用法 Rate 属性和事件 Select 下拉框 Select 下拉框用法 Select 下拉框联动 Select 下拉框多选 Select 下拉框分组 Select 搜索框 Select 属性和事件 Slider 滑动输入条 Slider 滑动输入条 Slider 属性 afterChange 事件 change 拖动事件 Switch 开关 Switch 开关用法