uniapp如何自己实现写一个picker选择框?
网友回复
1、编写自定义组件myPickerView.vue
<template>
<view class="my-picker-view" v-show="value">
<uni-transition mode-class="slide-bottom" :show="value"
:styles="{'width':'100%','height':'100vh','position':'fixed','bottom':'0'}">
<view class="empty-box" @click="handleCancel"></view>
<view class="picker-box">
<view class="picker-top">
<view class="cancel" @click="handleCancel">取消</view>
<view class="title">{{ title }}</view>
<view class="submit" @click="handleSubmit">确定</view>
</view>
<picker-view :value="pickerValue" indicator-class="indicator" @change="handleChange"
@pickstart="pickstart" @pickend="pickend" :immediate-change="true">
<picker-view-column class="picker-content">
<view class="picker-item" v-for="(item, index) in options" :key="index">{{ item[rangeKey] }}</view>
</picker-view-column>
</picker-view>
</view>
</uni-transition>
</view>
</template>
<script>
export default {
name: "myPickerView",
data() {
return {
pickerValue: [0],
isScroll: false
}
},
props: {
value: Boolean,
options: Array,
title: {
type: String,
default: ""
},
rangeKey: {
type: String,
default: "label"
}
},
methods: {
// 确定
handleSubmit() {
if(!this.isScroll) {
this.$emit('input', false);
this.$emit("change", this.options[this.pickerValue[0]]);
}
},
// 取消
handleCancel() {
this.isScroll = false;
this.$emit('input', false)...点击查看剩余70%


