移动端vant--带搜索的一个组件

13 篇文章 0 订阅

在这里插入图片描述

<template>
  <!-- <div> -->
    <van-popup v-model="showPicker_more" position="bottom">
      <van-search :placeholder="placeholder" v-model="interpolateSearch" />
      <!-- @cancel="showPicker_more = false" -->
      <van-picker show-toolbar :columns="userFilter(interpolateSearch)" :value-key="valueName"  @confirm="onConfirm" @cancel="showPicker_more = false" />
    </van-popup>
  <!-- </div> -->
</template>

<script>
export default {
  name: 'searchPicker',
  props: {
    placeholder: {
      type: String,
      default: '请输入'
    },
    // valueKey: { // 需要展示的是id 还是name 自己传
    //   type: String,
    //   default: ''
    // },
    list: { // 需要展示的数组
      type: Array,
      default: () => []
    },
    valueName: { // 需要展示的数组的name
      type: String,
      default: ''
    },
    valueId: { // 需要展示的数组的id
      type: String || Number,
      default: ''
    }
  },
  data () {
    return {
      showPicker_more: false,
      interpolateSearch: '' // 输入框数据
    }
  },
  computed: {
  },
  methods: {
    openMet () {
      this.showPicker_more = true
      this.interpolateSearch = ''
    },
    userFilter (query = '') {
      if (query === null) {
        query = ''
      }
      if (this.list && this.list.length > 0 && this.valueName !== '' && this.valueId !== '') {
        const arr = this.list.filter((item) => {
          return item[this.valueName].includes(query) || (item[this.valueId] + '').includes(query)
        })
        if (arr.length > 300) {
          return arr.slice(0, 300)
        } else {
          return arr.slice(0, 300)
        }
      }
    },
    onConfirm (val) { // 确定
      this.$emit('onConfirm', val)
      this.showPicker_more = false
    }
  }
}
</script>

<style lang="scss" scoped>
/deep/.van-field__body input{
  text-align: left !important;
}
</style>

可以的大家点点关注-总结不易谢谢大家-也可以留言需要哪类的我也可以尝试

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值