uniapp-微信小程序自定义picker选择器(仅限单项选择)

这篇具有很好参考价值的文章主要介绍了uniapp-微信小程序自定义picker选择器(仅限单项选择)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、要求: 小程序原生的picker组件,无法满足自定义样式。所以单独封装了组件,仅限于单项选择的情况
二、效果截图
微信小程序picker自定义样式,微信小程序,javascript,小程序,uni-app

三、代码文章来源地址https://www.toymoban.com/news/detail-735021.html

  1. html
<template>
	<view class="base_picker">
		<view class="show_view" @click="showHandle">{{ selectedName.label || selectedName }}</view>
		<uni-popup ref="popup" type="bottom" :safeArea="false" :maskClick="true">
			<view class="popup_container" :style="{borderRadius: `${radius} ${radius} 0 0`}">
				<view class="popup_head">
					<text class="btn cancel_btn" @click="$refs.popup.close()">{{ cancalText }}</text>
					<text class="title">{{ title }}</text>
					<text class="btn confirm_btn" @click="comfirmHandle" :style="comfirmSty">{{ comfirmText }}</text>
				</view>
				<picker-view v-if="listData && listData.length" class="picker_view" :value="pickerValue" :immediate-change="true"  @change="changeHandle">
					<picker-view-column >
						<view class="item" v-for="(item,index) in listData" :key="index">{{ item.label || item }}</view>
					</picker-view-column>
				</picker-view>
				<view class="empty_view" v-else>{{ emptyDesc }}</view>	
			</view>
		</uni-popup>
	</view>
</template>
  1. js
export default{
		props:{
			listData: {
				type: Array,
				default: ()=>[]
			},
			// 选中的下标
			pickerIndex: {
				type: [ Number, String ],
				default: ''
			},
			emptyDesc:{
				type: String,
				default: '暂无数据'
			},
			title: {
				type: String,
				default: '标题'
			},
			comfirmText:{
				type: String,
				default: '确定'
			},
			cancalText:{
				type: String,
				default: '取消'
			},
			comfirmSty: {
				type: Object,
				default: ()=>{}
			},
			//是否显示选择弹窗
			disable:{
				tyep: Boolean,
				default: false
			},
			radius:{
				type: String,
				default: '40rpx'
			}
		},
		data() {
			return{
				pickerValue: [],  //下标
				index: '',
			}
		},
		
		watch: {
			pickerIndex: {
				immediate: true,
				handler(e) {
					this.index = e;
				}
			}
		},
		
		computed:{
			selectedName(){
				let val = '';
				let { listData, index } = this;
				if(listData && listData.length){
					val = listData.filter((e,i) => i === index)[0]
				}
				return val
			}
		},
		
		methods: {
			showHandle(){
				if(this.disable) return
				this.$refs.popup.open()
			},
			
			changeHandle(e) {
				const val = e.detail.value
				this.getVal = val
			},
			
			comfirmHandle() {
				let choosedIndex =''
				if(this.getVal && this.getVal.length){
					this.pickerValue = this.getVal
					choosedIndex = this.index = this.getVal[0]
				} else {
					choosedIndex = this.pickerIndex
				}
				this.$refs.popup.close()
				// 返回选中的下标
				this.$emit('comfirmHandle',choosedIndex)
			}
		}
	}
  1. css样式
<style lang="scss" scoped>
	.base_picker{
		width: 100%;
		.show_view{
			width: 100%;
			height: 100rpx;
			display: flex;
			justify-content: center;
			align-items: center;
			background: #eee;
		}
		.popup_container{
			 background-color: #FFF;
			 .popup_head{
				 display: flex;
				 justify-content: space-between;
				 align-items: center;
				 .btn{
					padding: 28rpx 32rpx;	
					&.cancel_btn{
						color: #969799;
					}
					&.confirm_btn{
						color: #576B95
					}
				 }
				 .title{
					 padding: 28rpx 0;
					 flex: 1;
					 font-weight: 500;
					 color: #323233;
					 text-align: center;
				 }
			 }
			 .picker_view{
				 height: 520rpx;
				 .item{
					 display: flex;
					 justify-content: center;
					 align-items: center;
				 }
			 }
			 .empty_view{
				 height: 520rpx;
				 display: flex;
				 justify-content: center;
				 align-items: center;
			 }
		}
	}
</style>

到了这里,关于uniapp-微信小程序自定义picker选择器(仅限单项选择)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】选择器组件picker

    picker组件是一种从底部向上弹起的滚动选择器。 在官方文档中,有提供五种类型的picker组件,如普通选择器,多列选择器,时间选择器,日期选择器和省市区选择器。 (猜测是,这些选择器时不同的且常用的某种类型,于是就产生固定的模版)。 而在写法上是这么写滴,

    2024年01月18日
    浏览(54)
  • 【微信小程序】picker 滚动选择器

    参考:picker | 微信开放文档 刚开始使用的是vantweap的picker,但是居然有蒙版还无法自定义样式。 Picker 选择器 - Vant Weapp 苦恼ing。最后看到原生组件有自定义蒙版样式,豁然开朗~ 激活项的蒙版在文字上方   利用relative的层级z-index:-1展示在文字下方。

    2024年02月16日
    浏览(37)
  • 微信小程序picker多列选择器

    微信官方文档的的案例数据是写死,而且代码阅读性特别差 下面是我参考官方案例写的一个多列选择器,数据是都 动态获取 的 这是一个二列的选择器,如果需要三列的可以稍加修改一下 一、wxml 二、js 选择器中的数据都是 动态获取 的,只要将数据转成跟 data 中的数据格式

    2024年02月11日
    浏览(40)
  • 在微信小程序使用picker实现日期选择

    而且选择开始时间后,选择结束时间,能够选择的日期不能比开始日期还要早。要实现以上效果可这样写: 在wxml中写

    2024年02月16日
    浏览(62)
  • 微信小程序picker表单选择器的使用

    微信小程序picker表单选择器的使用 微信小程序picker表单选择器的使用 bindchange:当选择项改变时触发的方法 range:选项数组可以是二维数组 range-key:如果是二维数组时,用此属性指定第二维数组的键以达到在选择项中显示这个键对应的键值 value:是当前值是当前选中的数组的索

    2024年02月16日
    浏览(50)
  • 【微信小程序】-- 表单组件 - picker 实现日期选择器(五十三)

    💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘   大家好,又见面了,

    2023年04月16日
    浏览(44)
  • 微信小程序 picker-view 组件构建一个上下拖动选择器

    picker-view是官方的一个选择器组件 支持多级选择 当然也可以单项选择 我们先来看看是个什么东西吧 简单写一个 wxml代码 js定义一个事件 然后 界面效果就是这样的 我们可以鼠标往上拖 例如 我们第二个选择B 当我们鼠标拖动后 松开那一刻 pickerChange就会触发 他会给你一个数组

    2024年02月08日
    浏览(43)
  • uniapp 微信小程序 Picker下拉列表数据回显问题

    效果图: 1、template 2、data 3、methods

    2024年02月16日
    浏览(41)
  • 微信小程序 选择年和月以及回显 使用picker-view组件

    自己记录用的 可以作为参考

    2024年02月14日
    浏览(42)
  • 微信小程序自定义封装picker实现直接显示年月日时分

    效果如入下: 第一步,封装datepicker.js,可放在utils文件夹下。代码如下:   第二步,wxml代码: js代码:

    2024年01月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包