平台兼容性

mpvue-picker

基于 mpvue 框架的小程序选择控件

支持单列、多列以及级联

目前版本为 v2.0.1,v1.x.x 使用请点击

citypicker 已支持,详情点击 mpvue-citypicker

uni-app 使用 mpvue-picker

  1. template 模板代码
复制代码<template>
    <view class="mpvue-picker">
        <page-head :title="title"></page-head>
        <view class="uni-padding-wrap uni-common-mt">
            <view style="uni-title">选中的值 : </view>
            <view class="uni-textarea uni-common-mt">
                <textarea :value="pickerText" disabled placeholder="请点击下面的按钮进行选择"></textarea>
            </view>
            <view class="uni-btn-v">
                <button type="default" @click="showSinglePicker">单列选择</button>
                <button type="default" @click="showMulLinkageTwoPicker">二级联动</button>
                <button type="default" @click="showMulLinkageThreePicker">三级城市联动</button>
            </view>
        </view>
        <mpvue-picker :themeColor="themeColor" ref="mpvuePicker" :mode="mode" :deepLength="deepLength" :pickerValueDefault="pickerValueDefault"
         @onConfirm="onConfirm" @onCancel="onCancel" :pickerValueArray="pickerValueArray"></mpvue-picker>
        <mpvue-city-picker :themeColor="themeColor" ref="mpvueCityPicker" :pickerValueDefault="cityPickerValueDefault"
         @onCancel="onCancel" @onConfirm="onConfirm"></mpvue-city-picker>
    </view>
</template>
  1. javascript 代码
复制代码
<script>
    // https://github.com/zhetengbiji/mpvue-picker
    import mpvuePicker from '@/components/mpvue-picker/mpvuePicker.vue';
    // https://github.com/zhetengbiji/mpvue-citypicker
    import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
    import cityData from '@/common/city.data.js';

    export default {
        components: {
            mpvuePicker,
            mpvueCityPicker
        },
        data() {
            return {
                title : "mpvue-picker 使用示例",
                pickerSingleArray: [{
                        label: '中国',
                        value: 1
                    },
                    {
                        label: '俄罗斯',
                        value: 2
                    },
                    {
                        label: '美国',
                        value: 3
                    },
                    {
                        label: '日本',
                        value: 4
                    }
                ],
                mulLinkageTwoPicker: cityData,
                cityPickerValueDefault: [0, 0, 1],
                themeColor: '#007AFF',
                pickerText: '',
                mode: '',
                deepLength: 1,
                pickerValueDefault: [0],
                pickerValueArray:[]
            };
        },
        methods: {
            onCancel(e) {
                console.log(e)
            },
            // 单列
            showSinglePicker() {
                this.pickerValueArray = this.pickerSingleArray
                this.mode = 'selector'
                this.deepLength = 1
                this.pickerValueDefault = [0]
                this.$refs.mpvuePicker.show()
            },
            // 二级联动选择
            showMulLinkageTwoPicker() {
                this.pickerValueArray = this.mulLinkageTwoPicker
                this.mode = 'multiLinkageSelector'
                this.deepLength = 2
                this.pickerValueDefault = [0, 0]
                this.$refs.mpvuePicker.show()
            },
            // 三级联动选择
            showMulLinkageThreePicker() {
                this.$refs.mpvueCityPicker.show()
            },
            onConfirm(e) {
                this.pickerText = JSON.stringify(e)
            }
        },
        onBackPress() {
          if (this.$refs.mpvuePicker.showPicker) {
            this.$refs.mpvuePicker.pickerCancel();
            return true;
          }
          if (this.$refs.mpvueCityPicker.showPicker) {
            this.$refs.mpvueCityPicker.pickerCancel();
            return true;
          }
        },
        onUnload() {
            if (this.$refs.mpvuePicker.showPicker) {
                this.$refs.mpvuePicker.pickerCancel()
            }
            if (this.$refs.mpvueCityPicker.showPicker) {
                this.$refs.mpvueCityPicker.pickerCancel()
            }
        }
    };
</script>

Tips

  • mpvue-picker详细使用说明文档请参考: mpvue-picker说明
  • 对于多级联动,由于没有动态添加 picker 列数以及动态渲染其值,因此目前只支持 二级联动和三级联动。

隐私、权限声明

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

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

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

许可协议

MIT协议
635***@qq.com

2024-06-07

合适,感谢大佬

zcwjchen

2023-07-25

请问一下这个组件不能用两次吗?因为共用一个label导致更改其中一个城市时同步改了另一个,想问问大佬们有无解决方案。

109***@qq.com

2023-05-21

bug这么久还没改。。

110***@qq.com

2022-09-22

为啥我用最新的版本还没效果了,点击那个确定,弹窗不会出来,样式也是乱的。我用之前的版本反而可以。=-=

贼se

2021-03-30

问题是真的多

cha***@163.com

2020-08-14

为啥按确定的 这个弹窗遮罩层不会消失?取消也不行 也不知道哪个命令去关闭!!!

Onl***@aliyun.com

2020-06-08

啥玩意

王某人

2020-05-20

v3编译下疯狂报错

最烦取名字

2020-05-18

show() 方法都调用不到。。。。。。。。。。。 页面组件 <mpvue-picker :themeColor="themeColor" id="mpvuePickerView" ref="mpvuePickerView" :mode="mode" :deepLength="deepLength" :pickerValueDefault="pickerValueDefault" @onConfirm="onConfirm" @onCancel="onCancel" :pickerValueArray="pickerValueArray">

导入控件 import mpvuePicker from '@/components/mpvue-picker/mpvuePicker.vue'; // 初始化方法 showSinglePicker() { var vm = this; vm.pickerValueArray = vm._getSiteList() vm.mode = 'selector' vm.deepLength = 1 vm.pickerValueDefault = [0] vm.$refs.mpvuePickerView.show() },

jtshushu

2020-04-25

您好! 请问怎么传入已得到 的三级数据 这个里有一个BUG 就是在默认选择不行 测试了多次都不行

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