vue+vant+带模糊查询的单选组件封装

封装的组件代码

<template>
  <div class="select-grid-view">
    <van-search v-model="search_value" placeholder="请输入关键字进行搜索" />
    <div class="select-box">
      <van-radio-group v-model="value">
        <van-radio checked-color="#5282f0" :name="item[id]" v-for="item in selectList" :key="item[id]"
          @click="SelectEvent(item)">{{ item[label] }}</van-radio>
      </van-radio-group>
    </div>
  </div>
</template>
<script>
export default {
  props: ['list', 'id', 'label', 'defaultValue'],
  data() {
    return {
      search_value: '',
      value: '',
      selectList: []
    }
  },
  mounted() {
    this.selectList = this.list
    if (this.defaultValue) this.value = this.defaultValue
  },
  methods: {
    SearchFilterEvent(value) {
      let array = []
      for (let i = 0; i < this.list.length; i++) {
        if (this.list[i][this.label].indexOf(value) !== -1) {
          array.push(this.list[i])
        }
      }
      this.selectList = array
    },
    SelectEvent(item) {
      this.$emit('SelectEvent', item)
    }
  },
  watch: {
    search_value(value) {
      if (value) {
        this.SearchFilterEvent(value)
      } else {
        this.selectList = this.list
      }
    }
  }
}
</script>
<style lang="scss">
.select-grid-view {
  padding: 15px 0px 30px;
  box-sizing: border-box;

  .select-box {
    padding: 0px 15px 0px;
  }

  .van-radio {
    padding: 10px 0px;
    border-bottom: 1px solid #efefef;
    font-size: 12px;
  }
}
</style>

引用

<van-dropdown-menu active-color="#5282F0">
	<van-dropdown-item v-model="value1" :options="option1" @change="onSearch" />
	<van-dropdown-item :title="gridTitle" ref="grid">
		<SelectGrid :defaultValue="value2" :list="option2" id="id" label="name" @SelectEvent="SelectEvent($event)"></SelectGrid>
	</van-dropdown-item>
</van-dropdown-menu>

// 事件部分
SelectEvent(event) {
	this.value2 = event.id
	this.gridTitle = event.name
	this.$refs.grid.toggle()
	this.onSearch()
}

这是引用后的样子

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值