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



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


目录
相关文章
|
JavaScript
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10752 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
Vue2分页(Pagination)
本文介绍了如何在 Vue3 中创建一个自定义分页组件(Pagination)。该组件支持传入多个参数,如当前页数、每页条数、是否隐藏单页分页等,并提供了丰富的功能,包括快速跳转、显示数据总量及分页器位置调整。通过示例代码展示了组件的具体实现方式,包括模板结构、计算属性、监听方法及样式设置。此外,还介绍了如何在项目中引入并使用该分页组件。
604 0
Vue2分页(Pagination)
|
移动开发 小程序 测试技术
自定义多级联动选择器指南(uni-app)
在本文中,探讨了如何在uni-app中创建自定义多级联动选择器组件。这个组件具有强大的多端支持,可适用于H5、APP、微信小程序、支付宝小程序等多种平台。
1744 1
自定义多级联动选择器指南(uni-app)
|
JavaScript 小程序
【经验分享】 自定义picker组件,拿走即用。
【经验分享】 自定义picker组件,拿走即用。
834 6
|
移动开发 前端开发 JavaScript
开源即时通讯IM框架MobileIMSDK的H5端技术概览
开源即时通讯IM框架MobileIMSDK的H5端技术概览
655 2
开源即时通讯IM框架MobileIMSDK的H5端技术概览
|
JavaScript
ElementUI的el-dialog弹窗修改设置可拖拽可最大化
该方案通过自定义Vue指令实现ElementUI的`el-dialog`弹窗的拖拽和最大化功能。只需在`main.js`中引入并注册指令,然后在Vue组件中绑定指令即可。支持自定义参数控制是否允许最大化和拖拽,并提供最大化后的回调函数。具体使用方法详见示例代码。
3105 0
ElementUI的el-dialog弹窗修改设置可拖拽可最大化
|
前端开发 JavaScript API
带你入门前端工程(十一):微前端(上)
带你入门前端工程(十一):微前端
350 0
|
Web App开发 JavaScript 前端开发
鸿蒙Flutter实战:04-如何使用DevTools调试Webview
本文介绍如何在鸿蒙 Flutter 开发中调试 Webview,包括配置允许调试、找到 devtools 端口、开启端口转发、在 Chrome 中调试 Webview等。
921 0
鸿蒙Flutter实战:04-如何使用DevTools调试Webview
ElementPlus 之 el-select 多选实现全选功能
本文介绍了在ElementPlus框架中,如何通过自定义事件处理和条件判断实现`el-select`多选控件的全选功能。
2810 1
ElementPlus 之 el-select 多选实现全选功能