一、在Vant文档中,Picker组件的API中是没有showSearch这一选项的

1、Vant-Picker 文档

2、Antd-Select 文档

3、需要完成的需求

4、因为在H5项目中出现了类似需求,也就是在Picker-title的位置加一个搜索框,picker列表数据根据搜索显示

二、在Picker的title位置嵌入一个搜索框,使得Picker中显示的数据是根据搜索框输入内容查询后筛选的数据。

1、基础代码部分

<template>
<van-picker
title="标题"
:columns="columns" //数据列表
@confirm="onConfirm" //确认触发
@cancel="onCancel" //取消触发
@change="onChange" //选项改变触发
/>
</template>

<script>
import { Picker } from 'vant'  //引用组件

export default {
name: 'demo',
data() {
return {
columns: [],   //组件使用数据列表
}
},
mounted() {   //初始化数据
this.getList();  //加载页面获取数据
},
methods: {
/* 获取数据列表方法 */
async getList() {
try{
const { res } = await = getList(); //请求封装接口
const { code, msg, data } = res;  //接口返回数据
if( code === 200){
this.columns = data;  //存入数据
}
} catch( e ) { throw new Error( msg ) }
}
}
}
</script>

<style lang="less" scoped>
</style>

  

2、进行改造

<template>
<van-picker
title="标题"
:columns="searchColumns" //数据列表
@confirm="onConfirm" //确认触发
@cancel="onCancel" //取消触发
@change="onChange" //选项改变触发
>
<template #title>  //#title 显示在picker-title位置
<van-field
v-model="searchKey"  //双向绑定数据
placeholder="请输入搜索内容"
clearable
/>
</template>
</van-picker>
</template> <script>
import { picker, field } from 'vant'  //引用组件 export default {
name: 'demo',
data() {
return {
columns: [],   //组件使用数据列表,初始化后不改变
searchColumns: [],  //搜索筛选后的数据列表,随着查询内容改变  
}
},
mounted() {   //初始化数据
this.getList();  //加载页面获取数据
},
methods: {
/* 获取数据列表方法 */
async getList() {
try{
const { res } = await = getList(); //请求封装接口
const { code, msg, data } = res;  //接口返回数据
if( code === 200){
this.columns = data;  //存入数据
this.searchColumns = data;  //给查询数组初始化数据
}
} catch( e ) { throw new Error( msg ) }
}
},
watch: { //实时监听搜索输入内容
searchKey: function () {
let key = String( this.searchKey );
key = key.replace( /\s*/g, "" );  //去除搜索内容中的空格
const reg new RegExp( key, "ig" ); //匹配规则-i:忽略大小写,g:全局匹配
this.searchColumns = this.columns.filter( item => item.name.match( reg ) !=null );  //进行筛选,将筛选后的数据放入新的数组中
}
}
}
</script> <style lang="less" scoped>
</style>

  

三、实现思路

1、首先对搜索框进行数据的双向绑定,然后使用Vue-watch进行数据监听,在每次数据更新后使用匹配规则对请求接口返回的数据列表进行筛选,然后picker绑定筛选后的数据列表,从而实现antd-select-showSearch功能需求。

【每天学一点-06】在Vue中使用Vant-Picker选择器,并且给选择器添加一个类似Antd-Select-showSearch的搜索功能的更多相关文章

  1. VUE中实现iview的图标效果时遇到的一个问题

    [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available ...

  2. vue中click阻止事件冒泡,防止触发另一个事件

    在使用el-upload组件时,在其中放置了一个删除按钮的图片. 当点击图片,本想只删除上传的视频,但是意外触发了el-upload中的事件 解决办法:用stop,结果只删除当前预览,不触发上传事件. ...

  3. vue中给请求来的数据List ,添加属性false 后,赋值不上问题解决办法

    data() { return { list:[ // 添加属性fale 后的值 ], // 测试数据 goList:[ { name:'张三', phone:'18621958665' }, { n ...

  4. Vue中的计算属性和监听器(computed 与 watch)

    react中数据是单向绑定的,而vue中数据是双向绑定的.为什么? 在react中,主要是通过setState 去改变state的值:而在vue中,会自动的触发set 与get 改变属性的值. 在vu ...

  5. vue中watched属性

    watched属性,vue中的观察属性,可用来监听一个值的变化 默认有两个参数,新值,旧值 data (){ return { currentCity: "深圳" } } watc ...

  6. checkbox在vue中的用法总结

    前言 关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样, 之前对于 ...

  7. vue中过滤器比较两个数组取相同值

    在vue中需要比较两个数组取相同值 一个大数组一个 小数组,小数组是大数组的一部分取相同ID的不同name值 有两种写法,两个for循环和map写法 const toName = (ids, arr) ...

  8. Vue中获取dom元素

    Vue.js虽然说是数据驱动页面的,但是有时候我们也要获取dom对象进行一些操作. vue的不同版本获取dom对象的方法不一样 Vue.js  1.0版本中,通过v-el绑定,然后通过this.els ...

  9. vue 中父子组件传值:props和$emit

    更新----------- 1 父组件向子组件传值:通过props数组: 在vue-cli Login.vue父组件中有AcceptAndRefuse.vue子组件,首先import进子组件hello ...

随机推荐

  1. 关于div及display

    1.DIV div被看作是一个盒子,可以设置width.height.这个盒子其实是由三部分构成width(height).padding.border.在默认情况下,所见到的div是border和p ...

  2. SQL注入的几种类型

    SQL注入就是: 将构造SQL语句来插入到web提交的数据之中,让其返回数据时运行自己构造的恶意SQL语句. SQL注入构造恶意SQL语句的方法有: 构造堆叠,构造闭合,构造报错,构造时间差,等等 S ...

  3. python DOS 攻击,TCP压测脚本

    pip3 install string&&scapy 1 #!/usr/bin env python 2 #-*-coding:utf-8-*- 3 import socket,ran ...

  4. Blazor和Vue对比学习(进阶2.1.1):生命周期,基本理解和使用

    一.基本理解 首次接触"生命周期"这个名词,是比较晦涩的,Vue中又有生命周期钩子,而Blazor则是虚方法重写,容易蒙.所以,我尝试从初学者的角度来阐述一下. 1.我们在基础部分 ...

  5. 基于 GraphQL 的 BFF 实践

    随着软件工程的发展,系统架构越来越复杂,分层越来越多,分工也越来越细化.我们知道,互联网是离用户最近的行业,前端页面可以说无时无刻不在变化.前端本质上还是用户交互和数据展示,页面的高频变化意味着对数据 ...

  6. ptorch常用代码梯度篇(梯度裁剪、梯度累积、冻结预训练层等)

    梯度裁剪(Gradient Clipping) 在训练比较深或者循环神经网络模型的过程中,我们有可能发生梯度爆炸的情况,这样会导致我们模型训练无法收敛. 我们可以采取一个简单的策略来避免梯度的爆炸,那 ...

  7. AGC007E Shik and Travel 解题报告

    AGC007E Shik and Travel 题目大意:\(n\) 个点的二叉树,每个点要么两个儿子,要么没有儿子,每条边有边权. 你从 \(1\) 号节点出发,走到一个叶子节点.然后每一天,你可以 ...

  8. Java 线程创建与常用方法

    进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存.在指令运行过程中还需要用到磁盘.网络等设备.进程就是用来加载指令.管理内存.管理 IO ...

  9. 当运行npm install 命令的时候带上ignore-scripts,会发生什么?

    摘要:运行npm install 命令的时候带上ignore-scripts, 可以避免一个恶意包里的病毒. 本文分享自华为云社区<运行npm install 命令的时候带上--ignore-s ...

  10. SQL Server之自动创建视图

    本方法只适合特定模式的视图创建. 比如,创建需要整张表列名的视图,或者当表和需要的列名统计在一张数据表当中,如图所示: 首先要先获取要创建视图所需要的表,这里我获取的是整个数据库中的表, IF OBJ ...