当前位置:   article > 正文

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

uniapp select

 

 

 

目录

介绍

平台差异说明

使用方式

安装

引入

基本使用

默认选中项(回显)

配置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里面配置如下

  1. {
  2. "easycom": {
  3. "^lp-(.*)": "uni-multiple-select/components/lp-$1/index.vue"
  4. },
  5. "pages": [
  6. //...
  7. ]
  8. }

vue.config.js里面配置如下

  1. module.exports = {
  2.  transpileDependencies: [
  3.    'uni-multiple-select'
  4. ]
  5. }

基本使用

  1. <lp-multiple-select
  2.  v-model="show"
  3.  :list="list"
  4. />
  1. data() {
  2.  return {
  3.    // 数据源
  4.    list: [{
  5.      label: "皮皮虾",
  6.      value: "1"
  7.   },{
  8.      label: "小龙虾",
  9.      value: "2",
  10.      disabled: true // 禁用
  11.   },{
  12.      label: "大龙虾",
  13.      value: "3"
  14.   },{
  15.      label: "石头蟹",
  16.      value: "4"
  17.   }]
  18. };
  19. }

默认选中项(回显)

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

配置label、value对应的key名称

  1. <lp-multiple-select
  2.  v-model="show"
  3.  :list="list"
  4.  :default-value="defaultSelected"
  5.  label-name="text"
  6.  value-name="id"
  7.  @confirm="confirm"
  8. />

获取点击确认后的结果

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

完整示例

  1. <template>
  2.  <view class="content">
  3.    <view class="title">多选插件演示</view>
  4.    <view class="text-area">
  5.      <text class="label">当前选中项目:</text>
  6.      <text class="value" @tap="show = true">{{info || "请选择"}}</text>
  7.    </view>
  8.    <lp-multiple-select
  9.        class="test"
  10.        v-model="show"
  11.        :list="list"
  12.        height="50"
  13.        :default-value="defaultSelected"
  14.        label-name="text"
  15.        value-name="id"
  16.        title="今日晚餐"
  17.        @confirm="confirm"
  18.    >
  19.      <template v-slot:tips>
  20.        <view class="multiple-select__empty-tips">空空如也~~</view>
  21.      </template>
  22.    </lp-multiple-select>
  23.  </view>
  24. </template>
  25. <script>
  26. export default {
  27.  data() {
  28.    return {
  29.      show: false, //是否显示 - 双向绑定
  30.      list: [], //数据源
  31.      defaultSelected: ["3", "5"], // 默认选中项
  32.      info: "",
  33.   };
  34. },
  35.  onShow() {
  36.    //模拟异步数据
  37.    setTimeout(() => {
  38.      this.list = [
  39.       {
  40.          text: "皮皮虾",
  41.          id: "1"
  42.       },
  43.       {
  44.          text: "小龙虾",
  45.          id: "2",
  46.          disabled: true // 禁用
  47.       },
  48.       {
  49.          text: "大龙虾",
  50.          id: "3"
  51.       },
  52.       {
  53.          text: "石头蟹",
  54.          id: "4"
  55.       },
  56.       {
  57.          text: "兰花蟹",
  58.          id: "5"
  59.       },
  60.       {
  61.          text: "面包蟹",
  62.          id: "6"
  63.       },
  64.       {
  65.          text: "石斑鱼",
  66.          id: "7"
  67.       },
  68.       {
  69.          text: "鲫鱼",
  70.          id: "8"
  71.       },
  72.       {
  73.          text: "鲨鱼",
  74.          id: "9"
  75.       }
  76.     ]
  77.   }, 2000);
  78. },
  79.  methods: {
  80.    // 确定事件
  81.    confirm(selectedData, selectedDataIds) {
  82.      console.log(selectedData, selectedDataIds);
  83.      this.info = selectedData.map(el => el.text).join();
  84.   }
  85. }
  86. };
  87. </script>
  88. <style scoped>
  89. .title {
  90.  font-size: 36rpx;
  91.  color: #2088f9;
  92.  margin-top: 20vh;
  93.  text-align: center;
  94. }
  95. .text-area {
  96.  width: 100%;
  97.  margin-top: 5vh;
  98.  display: flex;
  99.  justify-content: center;
  100.  font-size: 28rpx;
  101.  box-sizing: border-box;
  102.  padding: 20rpx;
  103. }
  104. .value {
  105.  color: #2088f9;
  106. }
  107. .multiple-select__empty-tips {
  108.  margin-top: 25%;
  109.  text-align: center;
  110.  font-size: 40rpx;
  111.  color: #e2e2e2;
  112. }
  113. </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点击取消或者点击蒙层关闭时触发--
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/66657
推荐阅读
相关标签
  

闽ICP备14008679号