picker多选 vant_vant实现select效果,单选和多选

本文介绍如何基于Vant库封装一个自定义的select组件和checkbox多选组件,实现类似vant picker的效果,简化项目中对于选择器的使用,包括单选和多选功能,提供详细的组件代码实现和事件监听。
摘要由CSDN通过智能技术生成

官方推荐picker,但是我们项目用picker还要搭配Popup和cell、field,维护太太麻烦,所以自己封装一个

select单选

//封装VanFieldSelectPicker组件

v-model="resultLabel"

v-bind="$attrs"

readonly

is-link

input-align="right"

@click="show = !show"

/>

v-bind="$attrs"

:columns="columns"

show-toolbar

@cancel="cancel"

@confirm="onConfirm"

@change="change"

:value-key="this.option.label"

/>

export default {

name: 'VanFieldSelectPicker',

model: {

prop: 'selectValue'

},

props: {

columns: {

type: Array,

default: function () {

return []

}

},

selectValue: {

type: [String, Number],

default: ''

},

option: {

type: Object,

default: function () {

return { label: 'label', value: 'value' }

}

}

},

computed: {

resultLabel: {//双向绑定的数据做修改需要用get/set

get () {

const res = this.columns.filter(item => {

return item[this.option.value] === this.resultValue

})

return res.length ? res[0][this.option.label] : ''

},

set () {

}

}

},

data () {

return {

show: false,//Popup是否弹出

resultValue: this.selectValue //初始选中数据

}

},

methods: {

onConfirm (value, index) {//确定

this.resultValue = value[this.option.value]

this.show = !this.show

this.$emit('confirm', value, index, this.resultValue)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值