更新记录

1.0.3(2025-03-28) 下载此版本

修复非联动模式,传参报错问题

1.0.2(2025-03-28) 下载此版本

新增不联动下也可多列选择

1.0.1(2025-03-05) 下载此版本

修改返回数据时,返回整个选中的对象,而不是绑定的两个字段

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
app-vue × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

Picker 滚动选择器

组件名: xt-picker

适配情况需自行尝试,开发时只测试了H5、APP、微信小程序

安装方式

本组件符合 easycom 规范,HBuilderX 3.1.0 起,只需将本组件导入项目,在页面 template 中即可直接使用,无需在页面中 import 和注册 components

基本用法

<template>
    <view class="xt">
        <xt-picker ref="picker" v-model="xtID" :range="data" :show="show" @close="close" @change="change"></xt-picker>
        <button @click="showPicker">选择</button>
        <button @click="log">打印</button>
    </view>
</template>

<script>
export default {
    data() {
        return {
            load: false,
            show: false,
            xtID: [
                {
                    value: 1
                },
                {
                    value: 4
                }
            ],
            data: [
                [
                    {
                        value: 1,
                        label: '中国'
                    },
                    {
                        value: 6,
                        label: '美国'
                    },
                    {
                        value: 9,
                        label: '日本'
                    },
                    {
                        value: 11,
                        label: '韩国'
                    }
                ],
                [
                    {
                        value: 2,
                        label: '北京'
                    },
                    {
                        value: 4,
                        label: '上海'
                    },
                    {
                        value: 5,
                        label: '广州'
                    }
                ]
            ]
        };
    },
    methods: {
        log() {
            console.log(this.xtID);
        },
        change(e) {
            console.log(e);
        },
        showPicker() {
            this.show = !this.show;
        },
        close() {
            this.show = false;
        }
    }
};
</script>

<style lang="scss">
.xt {
    padding: 0 20rpx;
    display: flex;
    flex-direction: column;
    gap: 15rpx;
}
</style>

联动用法

<template>
    <view class="xt">
        <xt-picker ref="picker" v-model="xtID" :loading="load" :range='data' column="3" linked :show="show"
            @close="close" @change="change"></xt-picker>
        <button @click="showPicker">选择</button>
        <button @click="log">打印</button>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                load: false,
                show: false,
                xtID: [{
                    label: '中国',
                    value: 1
                }, {
                    label: '北京',
                    value: 2
                }, {
                    value: 12
                }, ],
                data: [{
                        value: 1,
                        label: '中国',
                        children: [{
                                value: 2,
                                label: '北京',
                                children: [{
                                        value: 3,
                                        label: '东城区'
                                    },
                                    {
                                        value: 12,
                                        label: '西城区'
                                    }
                                ]
                            },
                            {
                                value: 4,
                                label: '上海'
                            }, {
                                value: 5,
                                label: '广州'
                            }
                        ]
                    }, {
                        value: 6,
                        label: '美国',
                        children: [{
                            value: 7,
                            label: '纽约'
                        }, {
                            value: 8,
                            label: '洛杉矶'
                        }]
                    },
                    {
                        value: 9,
                        label: '日本',
                        children: [{
                            value: 10,
                            label: '东京'
                        }]
                    }, {
                        value: 11,
                        label: '韩国'
                    }
                ]
            }
        },
        methods: {
            log() {
                console.log(this.xtID);
            },
            change(e) {
                if (e.newValue == 2) {
                    this.load = true;
                    setTimeout(() => {
                        this.$refs.picker.setList(3, [{
                            value: 20,
                            label: '秋叶原'
                        }]);
                        this.load = false;
                    }, 2000)

                }
            },
            showPicker() {
                this.show = !this.show;
            },
            close() {
                this.show = false
            }
        }
    }
</script>
<style lang="scss">
    .xt {
        padding: 0 20rpx;
        display: flex;
        flex-direction: column;
        gap: 15rpx;
    }
</style>

API

属性 类型 默认值 说明
value String - 绑定值
show Boolean false 是否显示
title String - 标题
cancelText String 取消 取消按钮文字
cancelColor String #828383 取消按钮文字颜色
confirmText String 确定 确定按钮文字
confirmColor String #409EFF 确定按钮文字颜色
showControl Boolean true 是否显示顶部控制栏, 包含标题
loading Boolean false 是否显示加载中
bgColor String #fff 弹窗背景颜色
mask Boolean true 是否显示遮罩层
closeOnClickOverlay Boolean false 点击遮罩层关闭
itemHeight String|Number 44 各列中,单个选项的高度
visibleItemCount String|Number 5 每列中可见选项的数量
range Array - 选择器数据
linked Boolean false 是否多列联动
column Number 2 多列联动时显示几列
label String label 选择器数据中,每一项的标签
labelKey String value 选择器数据中,每一项的标识
immediateChange Boolean false 是否在手指松开时立即触发 change 事件

Events

事件名 说明
close 关闭事件
confirm 确定事件
change 当选择值变化时触发

Methods

通过ref调用

名称 说明
setList 设置对应列的选择数据 (index,arr) index:第几列 从 1 开始 arr:选择数据

隐私、权限声明

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

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

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

许可协议

MIT协议

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