uni-app多选select组件,兼容多平台小程序、H5

15 篇文章 5 订阅
7 篇文章 1 订阅

 

 

 

目录

介绍

平台差异说明

使用方式

安装

引入

基本使用

默认选中项(回显)

配置label、value对应的key名称

获取点击确认后的结果

完整示例

API

Props

Option Attributes

Slot

Events


介绍

  1. 多选select组件目前只支持多选,单选请用单选select组件

  2. 支持配置关键字段

  3. 兼容多平台小程序、H5

平台差异说明

H5微信小程序支付宝小程序百度小程序头条小程序

使用方式

安装

npm install uni-multiple-select

引入

uni-app的easycom在打包的时候是按需引入的,您可以放心引入的组件库,发布打包时会自动剔除您没有使用的组件

pages.json里面配置如下

{
  "easycom": {
    "^lp-(.*)": "uni-multiple-select/components/lp-$1/index.vue"
  },
  "pages": [
    //...
  ]
}

vue.config.js里面配置如下

module.exports = {
  transpileDependencies: [
    'uni-multiple-select'
  ]
}

基本使用

<lp-multiple-select
  v-model="show"
  :list="list"
/>
data() {
  return {
    // 数据源
    list: [{
      label: "皮皮虾",
      value: "1"
    },{
      label: "小龙虾",
      value: "2",
      disabled: true // 禁用
    },{
      label: "大龙虾",
      value: "3"
    },{
      label: "石头蟹",
      value: "4"
    }]
  };
}

默认选中项(回显)

<lp-multiple-select
  v-model="show"
  :list="list"
  :default-value="defaultSelected"
/>
data() {
  return {
    defaultSelected: ["1", "4"] // 默认选中项(value)
  }
}

配置label、value对应的key名称

<lp-multiple-select
  v-model="show"
  :list="list"
  :default-value="defaultSelected"
  label-name="text"
  value-name="id"
  @confirm="confirm"
/>

获取点击确认后的结果

<lp-multiple-select
  v-model="show"
  :list="list"
  @confirm="confirm"
/>
methods: {
  // 确认事件
  confirm(selectedData, selectedDataIds) {
    console.log(selectedData, selectedDataIds);
  }
}

完整示例

<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>
    <lp-multiple-select
        class="test"
        v-model="show"
        :list="list"
        height="50"
        :default-value="defaultSelected"
        label-name="text"
        value-name="id"
        title="今日晚餐"
        @confirm="confirm"
    >
      <template v-slot:tips>
        <view class="multiple-select__empty-tips">空空如也~~</view>
      </template>
    </lp-multiple-select>
  </view>
</template>
​
<script>
export default {
  data() {
    return {
      show: false, //是否显示 - 双向绑定
      list: [], //数据源
      defaultSelected: ["3", "5"], // 默认选中项
      info: "",
    };
  },
  onShow() {
    //模拟异步数据
    setTimeout(() => {
      this.list = [
        {
          text: "皮皮虾",
          id: "1"
        },
        {
          text: "小龙虾",
          id: "2",
          disabled: true // 禁用
        },
        {
          text: "大龙虾",
          id: "3"
        },
        {
          text: "石头蟹",
          id: "4"
        },
        {
          text: "兰花蟹",
          id: "5"
        },
        {
          text: "面包蟹",
          id: "6"
        },
        {
          text: "石斑鱼",
          id: "7"
        },
        {
          text: "鲫鱼",
          id: "8"
        },
        {
          text: "鲨鱼",
          id: "9"
        }
      ]
    }, 2000);
  },
  methods: {
    // 确定事件
    confirm(selectedData, selectedDataIds) {
      console.log(selectedData, selectedDataIds);
      this.info = selectedData.map(el => el.text).join();
    }
  }
};
</script>
<style scoped>
.title {
  font-size: 36rpx;
  color: #2088f9;
  margin-top: 20vh;
  text-align: center;
}
.text-area {
  width: 100%;
  margin-top: 5vh;
  display: flex;
  justify-content: center;
  font-size: 28rpx;
  box-sizing: border-box;
  padding: 20rpx;
}
.value {
  color: #2088f9;
}
.multiple-select__empty-tips {
  margin-top: 25%;
  text-align: center;
  font-size: 40rpx;
  color: #e2e2e2;
}
</style>

API

Props

属性说明类型默认值
v-model双向绑定控制弹出层显示Booleanfalse
list数据源Array[]
max多选时最大选择数Number99
cancel-text取消按钮文字String取消
confirm-text确认按钮文字String确认
title顶部中间的标题String-
label-name指定 list 中作为展示的 keyStringlabel
value-name指定 list 中作为 value 的 keyStringvalue
height弹出层高度,单位vhNumber|String30
z-index弹出时的z-index值Number|String10075
mask-close-able是否允许点击蒙层关闭Booleantrue
all-show是否显示全选Booleantrue
default-value默认选中值Array[Number|String][]
safe-area-inset-bottom是否开启底部安全区适配Booleantrue

Option Attributes

属性说明类型默认值
disabled是否禁用该选项booleanfalse

Slot

属性说明默认值
empty-tips自定义空数据时的提示暂无数据~

Events

事件名说明回调参数版本
confirm点击确定按钮,返回当前选择的值目前的选中选项[Array]与主键值[Array]-
cancel点击取消或者点击蒙层关闭时触发--
uni-data-select功能可以通过设置v-model为一个数组来实现。在择项发生变化时,所的数据将会保存在v-model所绑定的数组中。根据引用中的示例代码,你可以按照以下步骤来实现功能: 1. 在data中声明一个数组变量,用于保存所的数据: ```javascript data() { return { formData: { femMerchantsClassificationId: [] // 用于保存结果的数组 }, range: [] } } ``` 2. 在uni-data-select标签中添加v-model属性,将其绑定到formData中的数组变量上: ```html <uni-data-select v-model="formData.femMerchantsClassificationId" :localdata="range" @change="change"></uni-data-select> ``` 3. 当下拉框内容调用后端接口时,通过遍历后端返回的数据,将每个项的id和名称添加到range数组中: ```javascript success: (res) => { const All = res.data let myrange = [] All.forEach((val, index) => { myrange.push({ value: val.femMerchantsClassificationId, // 项id text: val.femMerchantsClassificationName // 项名称 }) }) this.range = myrange } ``` 现在,你就可以通过择uni-data-select中的项来实现功能了。所的数据将会保存在formData.femMerchantsClassificationId数组中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [uni-appselect组件兼容多平台小程序、H5](https://blog.csdn.net/qq_41887214/article/details/120855815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [uniapp 下拉框效果使用 uni-data-select标签](https://blog.csdn.net/2301_76882889/article/details/130267707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__畫戟__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值