更新记录

1.1.1(2020-11-17)

修复弹出层页面触发下拉刷新问题

1.1.0(2020-07-01)

1.支持全选 2.支持默认选中值 3.新增数据为空时的tips,支持通过插槽自定义

1.0.0(2020-06-24)

多选组件 - 初始版本 欢迎反馈问题~

查看更多

平台兼容性

在 H5、微信小程序测试通过,理论支持全平台

支持功能列表

  • 多选 ✔

  • 全选 ✔

  • 异步数据 ✔

  • 默认选中值 ✔

  • 禁用某一项数据 ✔

属性:

属性 说明 类型 默认值
data 数据源 Array []
cancel-text 取消按钮文字 String 取消
confirm-text 确认按钮文字 String 确认
label-name 指定 data 中作为展示的 key String label
value-name 指定 data 中作为 value 的 key String value
mask-close-able 是否允许点击蒙层关闭 Boolean true
model 多选或单选模式,目前仅支持多选 String multiple
all-show 是否显示全选 Boolean true
default-selected 默认选中值 Array []

插槽:

名称 说明
tips 自定义空数据时的提示

事件:

事件名 说明 返回值 示例
@confirm 点击确认触发,多选返回数组对象,单选返回对象 Array | Object [{label:'皮皮虾',value:'1'}] | {label:'皮皮虾',value:'1'}
@cancel 点击取消/点击蒙层关闭时触发 String 无返回值(undefined)

实例:

基础用法

如需禁用某一项,则在数据源中添加 disabled:true,可参考以下例子。
<template>
  <view class="content">
    <view class="title">多选插件演示</view>
    <view class="text-area">
      <text class="label">当前选中项目:</text>
      <text class="value" @tap="show = true">{{info || "请选择"}}</text>
    </view>
    <multiple-select
      v-model="show"
      :data="list"
      :default-selected="defaultSelected"
      @confirm="confirm"
    ></multiple-select>
  </view>
</template>

<script>
  import multipleSelect from "@/components/multiple-select/multiple-select";
  export default {
    components: {
      multipleSelect,
    },
    data() {
      return {
        show: false, //是否显示 - 双向绑定
        info: "",
        list: [], //数据源
        defaultSelected: ["3", "5"], //默认选中项
      };
    },
    onShow() {
      //模拟异步数据
      setTimeout(() => {
        this.list = [
          {
            label: "皮皮虾",
            value: "1",
          },
          {
            label: "小龙虾",
            value: "2",
            disabled: true, //禁用
          },
          {
            label: "大龙虾",
            value: "3",
          },
          {
            label: "石头蟹",
            value: "4",
          },
          {
            label: "兰花蟹",
            value: "5",
          },
          {
            label: "面包蟹",
            value: "6",
          },
          {
            label: "石斑鱼",
            value: "7",
          },
          {
            label: "鲫鱼",
            value: "8",
          },
          {
            label: "鲨鱼",
            value: "9",
          },
        ];
      }, 1000);
    },
    methods: {
      // 确定事件
      confirm(data) {
        console.log(data);
        this.info = data.map((el) => el.label).join(",");
      },
    },
  };
</script>
<style>
  .text-area {
    width: 100%;
    margin-top: 5vh;
    display: flex;
    justify-content: center;
    font-size: 28rpx;
    box-sizing: border-box;
    padding: 20rpx;
  }
  .value {
    color: #2088f9;
  }
  .title {
    text-align: center;
    font-size: 36rpx;
    color: #2088f9;
    margin-top: 20vh;
  }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问