vant(一)基于picker单选组件自定义picker多选组件~

简介: vant(一)基于picker单选组件自定义picker多选组件~

手机端网页使用的是vant组件库。


有需求需要使用多选的picker组件,但是vant组件库中只有单选的picker组件。


嗯,可能我们需要基于vant的单选picker组件和checkbox组件来自定义一个多选的picker组件。


代码版本:vue3.2+vant4.0.10


Vue组件代码:


<van-field
      v-model="position_main_name"
      readonly
      name="position_main_name"
      label="学生列表"
      placeholder="点击选择学生,可多选!"
      required
      @click="showStudentSelectPicker = true"
      :rules="[
        {
          required: true,
          message: '请选择学生!',
        },
      ]"
    />
  <van-popup
    round
    v-model:show="showStudentSelectPicker"
    position="bottom"
    :style="{ height: '50%' }"
  >
    <van-picker
      :columns="studentList"
      value-key="name"
      item-height="56px"
      @confirm="onConfirm"
      @cancel="showStudentSelectPicker = false"
    >
      <template #option="option">
        <div style="width: 100%">
          <van-checkbox-group
            v-model="studentGroupChecked"
            style="display: inline-block; margin-left: 130px"
          >
            <van-checkbox :name="option.name" shape="square">{{
              option.name
            }}</van-checkbox>
          </van-checkbox-group>
        </div>
      </template>
    </van-picker>
  </van-popup>

 


组件js代码:


// 学生列表
export const studentList = ref(Array(<any>[{name: "潇寒-1"}, {name: "宋俊铭-123456"}]));
// 选择下拉列表弹窗标识
export const showStudentSelectPicker = ref(<boolean>false);
// 学生下拉列表框显示
export const position_main_name = ref(<any>'');
// 学生选中值
export const studentGroupChecked = ref(Array(<any>[]));
/**
 * @name: 选择学生下拉列表点击确定
 * @author: camellia
 * @email: guanchao_gc@qq.com
 * @date: 2023-01-18 22:47:46
 */
export const onConfirm = () => {
    let array = <any>[];
    studentGroupChecked.value.forEach(function (item:any) {
        if(item != '')
        {
            array.push(item);
        }
    });
    studentGroupChecked.value = array;
    position_main_name.value = studentGroupChecked.value;
    showStudentSelectPicker.value = false;
};

上边的组件代码的基本使用。复制应该就能好用。


最终效果:

image.png



有好的建议,请在下方输入你的评论。


目录
相关文章
|
9月前
|
测试技术
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
【sgLazyCascader】自定义组件:基于el-cascader的懒加载级联菜单,支持异步加载子级菜单
|
JavaScript
ant design vue 设置表格选择框,全选按钮选不全
ant design vue 设置表格选择框,全选按钮选不全
1618 0
|
2月前
|
存储 前端开发 UED
React 中的多选按钮(Checkbox)
本文详细介绍了在 React 中实现多选按钮(Checkbox)的方法,包括基础用法、常见问题及解决策略、进阶技巧如使用受控组件和第三方库,旨在帮助开发者更好地理解和应用多选按钮组件。
138 19
|
9月前
|
JavaScript UED
【vue】iview组件 DatePicker 日期选择器如何显示默认当前日期
【vue】iview组件 DatePicker 日期选择器如何显示默认当前日期
470 1
|
6月前
|
JavaScript API 容器
Vue3气泡卡片(Popover)
这是一个基于Vue的气泡卡片组件(Popover)介绍,提供了在线预览链接及详细API参数说明,包括maxWidth、title、content等,并支持自定义样式。
266 0
Vue3气泡卡片(Popover)
|
7月前
|
JavaScript 前端开发
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
react18【系列实用教程】双向绑定表单 (2024最新版)含受控组件、非受控组件、单行多行输入框 input,下拉选择 select,单选 radio,多选 checkbox,标签 label
206 1
|
7月前
|
JavaScript
vue 自定义单选样式 radio
vue 自定义单选样式 radio
69 0
|
9月前
|
JavaScript 前端开发
< elementUi组件封装: 通过 el-tag、el-popover、vue动画等实现公告轮播 >
在 Vue + elementUi 开发中,遇到这么一个需求,要实现公告轮播的效果。说实话,一开始是打算通过Javascript去获取并修改对应元素来控制轮播的,但是发现这样子代码比较多,而且性能不是很好。然后…聪明的小温想到了,能不能通过vue的动画过渡,实现公告的滚动效果呢!一不做二不休,直接上手,果然是可以实现的!接下来,简单阐述下,开发中使用方法!
256 0
|
9月前
|
JavaScript
uniapp用picker实现自定义三级联动(children)
uniapp用picker实现自定义三级联动(children)
212 0
|
9月前
elementUI el-tabs 实现动态选项卡页面效果
elementUI el-tabs 实现动态选项卡页面效果