ant-design-vue中的select选择器,对输入值的进行筛选操作


Posted in Javascript onOctober 24, 2020

今天在设计一个标签(采用的是Select 选择器中的标签那一个)时,从后台返回了数据,但是在输入值时,没有对回显的值进行过滤匹配,通过查看官方文档,解决了这个问题。

记在这里方便以后查看。

ant-design-vue中的select选择器,对输入值的进行筛选操作

<a-form-item label='标签' v-bind="formItemLayout">
  <a-select
   mode="tags"
   :allowClear="true"
   :filterOption="filterOption"
   style="width: 100%"
   v-decorator="['tag',{rules: [{ required: true, message: '请选择标签' }]}]">
   <a-select-option v-for="t in tags" :key="t.id.toString()">{{t.tagName}}</a-select-option>
  </a-select>
</a-form-item>

methods中:

filterOption(input, option) {
  return (
   option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
  );
},

其中对于过滤起作用的是filterOption

官网上对其的解释:

ant-design-vue中的select选择器,对输入值的进行筛选操作

补充知识:ant design的Select下拉选择器 带搜索功能

在做项目的过程中,可能会遇到 下拉框内容较多,为了方便用户选择加入检索功能。

用法

利用ant design 中的select选择器完成此功能。

首先 要获取下拉选择内容数据,和普通下拉选的数据结构一致,数组对象 键值对。

然后把数据渲染到选择器中,我在项目中 遇到的是数据较多,但是为了防止数据下拉较长,后端返回数据做了类似分页处理,每次返回10条数据,那在获取初始数据时其实就获取了十条数据。

把数据放到一个空数组中,然后渲染到选择器中。

componentDidMount() {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',
  payload: { },
  callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
 }
const children = [];
data.forEach(d => {
 children.push(<Option key={d.id}>{d.name}</Option>);
})
<Select
 showSearch
 allowClear
 labelInValue
 placeholder="请选择项目"
 optionFilterProp="children"
 onSearch={this.handleSearch}
 onChange={this.handleChange}
 filterOption={(input, option) =>
  option.props.children[0].toLowerCase().indexOf(input.toLowerCase()) >= 0
 }
 >
 {children}
 </Select>

那在触发搜索功能的时候,其实只是搜索了10条内容,那在onSearch中还有去请求其他数据。

handleSearch = value => {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',
  payload: {
  q: value
  },
  callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
};

如果输错了搜索内容,往回删除修改的时候还需要去请求一次数据,触发了onChange事件。

handleChange = value => {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',
  callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
 };

现在功能完成了。

效果图如下:

ant-design-vue中的select选择器,对输入值的进行筛选操作

以上这篇ant-design-vue中的select选择器,对输入值的进行筛选操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
基于jquery点击自以外任意处,关闭自身的代码
Feb 10 Javascript
现如今最流行的JavaScript代码规范
Mar 08 Javascript
AngularJS入门教程(二):AngularJS模板
Dec 06 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
Vuex提升学习篇
Jan 11 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
JavaScript寄生组合式继承原理与用法分析
Jan 11 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
Mar 27 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
jquery插件懒加载的示例
Oct 24 #jQuery
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 #Javascript
Antd下拉选择,自动匹配功能的实现
Oct 24 #Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 #Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 #Javascript
解决vue打包报错Unexpected token: punc的问题
Oct 24 #Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 #Javascript
You might like
PHP自定义函数收代码
2010/08/01 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
python判断字符串是否包含子字符串的方法
2015/03/24 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python实现的特征提取操作示例
2018/12/03 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
浅谈Python3中print函数的换行
2020/08/05 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
十八大演讲稿
2014/05/22 职场文书
公民代理授权委托书
2014/09/24 职场文书
停发工资证明范本
2015/06/12 职场文书
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android