vant手机端点击下拉框数据过多-添加搜索功能 下拉模糊搜索

7 篇文章 0 订阅
2 篇文章 0 订阅

前提需求:

vant 并没有提供可搜索的选择器。因为项目下拉项太多,而且不好记,所以需要这个模糊查询的选择器。类似于element-ui 的可搜索Select选择器

<template>
  <div style="margin-left: 13%">
    <van-field style="width: 80%" required readonly clickable name="meetingId" :value="pagelook.position" label="" right-icon="arrow-up" placeholder="选择与我相关的会议进行筛选" @click="changePicker(1)" :rules="[{ required: true, message: '选择与我相关的会议进行筛选' }]" />
    <van-popup position="bottom" v-model="showPicker">
      <van-search placeholder="请输入会议名称" v-model="positionSearch" @search="onSearch2(positionSearch)" />
      <van-picker cancel-button-text="取消" value-key="lable" show-toolbar :columns="ret" @confirm="onConfirmPicker" @cancel="showPicker = false" />
    </van-popup>
  </div>
</template>
<script>
import { QueryAboutMeMeetingList,  } from '../../../api/oa'
export default {
  data() {
    return {
      ret: [],
      typeFlag: '',
      positionList: [],
      showPicker: false,
      positionSearch: '',
      pagelook: {
        position: ''
      },

      meetingId: ''
    }
  },
  methods: {
        changePicker(flag) {
      this.typeFlag = flag
      if (flag === 1) {
        this.positionSearch = ''
      }
      this.showPicker = true
      this.getPositionList(1)
    },
    onSearch2(val) {
      this.ret = []
      this.positionList.forEach((item) => {
        if (item.lable.indexOf(val) > -1) {
          this.ret.push(item)
        }
      })
    },
    getPositionList(type) {
      if (type === 1) {
        this.positionList.forEach((item) => {
          if (this.positionSearch) {
            if (item.lable.indexOf(this.positionSearch) > -1) {
              this.ret.push(item)
            }
          } else {
            this.ret.push(item)
          }
        })
      }
    },
    onConfirmPicker(value) {
      if (this.typeFlag === 1) {
        this.pagelook.position = value.lable
        this.meetingId = value.value
      }
      this.onSearch()
      this.showPicker = false
      this.ret = []
    },

    onSearch(obj) {
      this.list = new Array()
      this.page = 1
      this.getWaitDoTasks()
    },

    QueryAboutMeMeetingList() {
      var user = JSON.parse(window.localStorage.user)
      let para = {
        userCode: user.sub
      }
      QueryAboutMeMeetingList(para).then((res) => {
        res.data.response.forEach((item) => {
          var obj = {}
          obj.value = item.Id
          obj.lable = item.MeetingName
          this.positionList.push(obj)
        })
      })
    }
  },
  mounted() {
    this.QueryAboutMeMeetingList()
  }
}
</script>

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vant 是一个基于 Vue.js 的移动端 UI 组件库,其中也包含了下拉菜单组件 van-dropdown-menu。然而,Vant 的 van-dropdown-menu 组件目前并不支持可下拉搜索功能。 如果你需要实现可下拉搜索下拉菜单,可以考虑使用其他的 Vue.js 组件库,例如 Element UI 或 Vue Select。这些组件库提供了类似的下拉菜单组件,并且支持搜索功能。 以下是使用 Element UI 的 el-select 组件实现可下拉搜索的示例: 1. 首先,安装 Element UI 并引入相关的 CSS 和 JavaScript 文件。你可以在 Element UI 的官方网站上找到相应的安装和引入方法。 2. 在 Vue 组件中,使用 el-select 组件创建可下拉搜索下拉菜单。设置 `filterable` 属性为 true,表示启用搜索功能。 ```vue <template> <el-select v-model="selectedOption" filterable> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> </template> <script> export default { data() { return { selectedOption: '', options: [ { value: 'option1', label: 'Option 1' }, { value: 'option2', label: 'Option 2' }, { value: 'option3', label: 'Option 3' }, ] }; } }; </script> ``` 在上述示例中,`selectedOption` 表示当前选中的选项,`options` 是下拉菜单的选项列表。你可以根据自己的需求来设置选项的值和显示文本。 通过设置 `filterable` 属性为 true, el-select 组件会在输入框中显示一个搜索框,用户可以在其中输入关键字进行搜索。 这样,你就可以使用 Element UI 的 el-select 组件实现可下拉搜索下拉菜单了。请确保已按照 Element UI 的文档正确引入相关文件,并在 Vue 组件中正确使用该组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值