原生微信小程序自定义picker多列选择器:picker写法用法

news2024/11/20 8:45:26

前言:

 

        

        最近用原生微信小程序写法写医疗相关项目微信小程序,在编辑个人资料的时候,需要很多选择器,比如城市地区选择器,职业职称选择器,科室选择器,学校选择器,学历选择器,年份日期选择器........

 

        总之用到的地方比较多,而微信文档里面这类的又很少,有的还不适合项目。需要进行改造。于是乎,便有了这篇文章。

 这是PC的编辑用户信息的选择器,小程序要做一样功能的,且调用PC选择器里面的接口返回的数据。

 

 

 

                                                         (pc的一些选择器样式功能)

先看看微信自有的一些选择器 

微信自带选择器直通车======》》》》》》  picker

 

 像上面的一些职称,年份,是可以直接用自带的普通选择器去做

 wxml

<view class="tui-picker-content">
			<view class="tui-picker-name">补全信息</view>
			<picker bindchange="changeOption" mode="selector"  range-key="label" value="{{optionindex}}" range="{{mobileOptions}}" style="width: 76%;">
				:<text class="tui-picker-detail">{{mobileOptions[optionindex].label}}</text>
				<image src="/images/select_down.png" mode=""></image>
	</picker>
</view>

js 

//数据	
mobileOptions: [{
			roleid: 1,
			label: '执业医师'
		}, {
			roleid: 5,
			label: '医学生'
		}, {
			roleid: 0,
			label: '其他'
		}],



	// 选择补充信息
	changeOption(e) {
		console.log(e, 'eeeee',this.data.mobileOptions[e.detail.value].roleid)
		this.setData({
			roleid: this.data.mobileOptions[e.detail.value].roleid,
			optionindex: e.detail.value
		});
		//职业医师
		if (this.data.mobileOptions[e.detail.value].roleid == 1) {

		}
		//医学生
		if (this.data.mobileOptions[e.detail.value].roleid == 1) {

		}
		//其他
		if (this.data.mobileOptions[e.detail.value].roleid == 0) {

		}
	},

多级选择器 

 

<!--pages/picker/picker.wxml-->
<view>
	<view class="tui-picker-content">
			 <view class="tui-picker-name">科室</view>
			<picker mode="multiSelector" bindchange="bindMultiPickerChange_keshi" bindcolumnchange="bindMultiPickerColumnChange_keshi"
			      value="{{multiIndex}}" range="{{newArr}}">
			    <view class="picker">
					:<van-button type="primary" style="font-size:28rpx;">{{division?division:'请选择科室'}}</van-button>
			    </view>
				<image  bindchange="changeRegin" src="/images/select_down.png" mode="" ></image>
			</picker>
		</view>
</view>

数据格式 

 

 

// pages/picker/picker.js
import {
	config
} from '../../config.js'
Page({
	onShareAppMessage() {
		return {
			title: 'picker',
		}
	},
	/**
	 * 页面的初始数据
	 */
	data: {
	    //科室
		multiArray:[],
		multiIndex: [0, 0, 0],
		multiIds: [],
		newArr: [],
	},
	onShow: function() {
		console.log('onShow')


	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function(options) {

	},

	bindMultiPickerChange_keshi(e) {
		console.log(this.data.multiIds);
		let name = this.data.multiIds.map(i=>i.name).join('/')
		console.log(name,'科室name===')
		this.setData({
			division:name
		})
	},
	bindMultiPickerColumnChange_keshi(e) {
		let data = {
			newArr: this.data.newArr,
			multiIndex: this.data.multiIndex,
			multiIds: this.data.multiIds,
		};
		data.multiIndex[e.detail.column] = e.detail.value;

		let searchColumn = () => {
			let arr1 = [];
			let arr2 = [];
			this.data.multiArray.map((v, vk) => {
				if (data.multiIndex[0] === vk) {
					data.multiIds[0] = {
						...v,
					};
					v.children.map((c, ck) => {
						arr1.push(c.name);
						if (data.multiIndex[1] === ck) {
							data.multiIds[1] = {
								...c,
							};
							// c.children.map((t, vt) => {
							// 	arr2.push(t.name);
							// 	if (data.multiIndex[2] === vt) {
							// 		data.multiIds[2] = {
							// 			...t,
							// 		};
							// 	}
							// });
						}
					});
				}
			});
			data.newArr[1] = arr1;
			data.newArr[2] = arr2;
		};
		switch (e.detail.column) {
			case 0:
				// 每次切换还原初始值
				data.multiIndex[1] = 0;
				data.multiIndex[2] = 0;
				// 执行函数处理
				searchColumn();
				break;
			case 1:
				data.multiIndex[2] = 0;
				searchColumn();
				break;
		}
		this.setData(data);
	},




	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function() {

	}
})

尾部,看看成品

看完记得点个赞呗~~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/897908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-TensorFlow - TensorBoard可视化

TensorFlow包含一个可视化工具&#xff0c;称为TensorBoard&#xff0c;它用于分析数据流图&#xff0c;还用于了解机器学习模型。 TensorBoard的重要功能包括查看有关垂直对齐的任何图形的参数和详细信息的不同类型统计的视图。 深度神经网络包括多达36&#xff0c;000个节点…

大数据Flink(六十四):Flink运行时架构介绍

文章目录 Flink运行时架构介绍 一、系统架构 二、​​​​​​​​​​​​​​整体构成 三、作业管理器&#xff08;JobManager&#xff09; 四、任务管理器&#xff08;TaskManager&#xff09; Flink运行时架构介绍 我们已经对 Flink 的主要特性和部署提交有了基本的了…

机器视觉工程们,我们值多少钱

&#xff08;QQ群有答疑&#xff09;零基础小白快速上手海康VisionMaster开发系列课程 UP主你的主题太吸引人&#xff0c;也太不近人情世故了&#xff0c;实施上&#xff0c;别人总是这样子去想。 人们会根据自己的观点去评价别人&#xff0c;去评估别人的价值&#xff0c;其实…

第1天----验证一个字符串是否是另一个字符串的子串

本文我们将学习如何去验证一个字符串是否是另一个字符串的子串。 一、小试牛刀&#xff1a; 题目描述 输入两个字符串&#xff0c;验证其中一个串是否为另一个串的子串。 输入格式 两行&#xff0c;每行一个字符串。 输出格式 若第一个串 s 1 是第二个串 s 2 的子串&#xff0c…

前端:VUE2中的父子传值

文章目录 一、背景什么是父子传值二、业务场景子传父1、在父页面中引入子页面2、子传父&#xff1a;父组件标识3、子传父&#xff1a;子组件标识 父传子父组件调用子组件中的方法 总结&#xff1a; 一、背景 最近做项目中需要使用到流工作&#xff0c;在这里流工作需要用到父子…

GM65二维码识别模块+命令控制

简介 MG65 条码识读模块&#xff0c;一款性能优良的扫描引擎&#xff0c;不仅能够轻松读取各类一维条码&#xff0c;而且可以高速读取二维条码&#xff0c;对线性条形码具有非常高的扫描速率&#xff0c;针对纸质条码及显示屏上的条码&#xff0c;也都能轻松扫描。 一、模块参…

【云原生】kubernetes应用程序包管理工具Helm

Helm 什么是 Helm 安装 Helm 重要概念 使用 Helm 1 简介 官网地址: Helm Helm是一个Kubernetes应用程序包管理工具&#xff0c;它允许你轻松管理和部署Kubernetes应用程序。Helm通过使用称为Charts的预定义模板来简化Kubernetes应用程序的部署和管理。Chart包含了一组Ku…

YOLOv5算法改进(2)— 添加SE注意力机制

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。注意力机制是近年来深度学习领域内的研究热点&#xff0c;可以帮助模型更好地关注重要的特征&#xff0c;从而提高模型的性能。注意力机制可被应用于模型的不同层级&#xff0c;以便更好地捕捉图像中的细节和特征&#xff…

LeetCode_动态规划_困难_1388.3n 块披萨

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个披萨&#xff0c;它由 3n 块不同大小的部分组成&#xff0c;现在你和你的朋友们需要按照如下规则来分披萨&#xff1a; 你挑选任意一块披萨。Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨。…

使用metasploit(MSF)对windows的ms17-010漏洞进行利用

主机发现 Ping扫描-禁用端口扫描 nmap -sn 192.168.1.0/24 ─# nmap -sn 192.168.1.0/24 Starting Nmap 7.93 ( https://nmap.org ) at 2023-08-14 10:00 EDT Nmap scan report for 192.168.1.1 Host is up (0.0053s latency). MAC Address: FC:BC:D1:C7:2F:A8 (Huawei Te…

SystemVerilog interface使用说明

1. Interface概念 System Verilog中引入了接口定义&#xff0c;接口与module 等价的定义&#xff0c;是要在其他的接口、module中直接定义&#xff0c;不能写在块语句中&#xff0c;跟class是不同的。接口是将一组线捆绑起来&#xff0c;可以将接口传递给module。 2. 接口的优…

Mysql性能优化:什么是索引下推?

导读 索引下推&#xff08;index condition pushdown &#xff09;简称ICP&#xff0c;在Mysql5.6的版本上推出&#xff0c;用于优化查询。 在不使用ICP的情况下&#xff0c;在使用非主键索引&#xff08;又叫普通索引或者二级索引&#xff09;进行查询时&#xff0c;存储引擎…

同一个区域多景影像使用同一个拉伸色带显示

问题描述 现需要对11景某一个区域的NDVI数据进行出图&#xff0c;且需要使用同一个拉伸的色带&#xff0c;但是拉伸色带的间断值是根据影像的直方图确定的&#xff0c;意味着11景影像会有11个不同的拉伸色带&#xff0c;不符合需求。 解决方法 目前想到的解决方法就是将11景…

稚晖君人形机器人问世:大模型加持,会自己换胳膊,要上生产线造车

从零开始,不到半年就造出人形机器人,还自带软硬件体系。 大模型技术的新一波浪潮:具身智能,已经有了重要进展。 刚刚,稚晖君的创业公司「智元机器人」开了自己的第一场发布会。 以「天才少年」身份加入华为的稚晖君(彭志辉)于去年底宣布离职创业,人们都在关注他在机器…

类的访问限定符,实例化,对象存储方式,this指针

目录 类的定义 类的两种定义方式&#xff1a; 访问限定符 类的实例化 类对象的存储方式 this指针 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。比如&#xff1a; 之前在数据结构初阶中&#xff0c;用C语…

c++11 标准模板(STL)(std::basic_stringbuf)(七)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbu…

SRE方法论之服务质量目标

为了量化客户对服务可靠性的期望&#xff0c;找到客户对可靠性满意的点&#xff0c;我们需要制定针对用户的服务质量目标&#xff0c;并且努力去达到这个质量目标。在这个过程中&#xff0c;我们需要定义一些服务质量指标&#xff08;SLI&#xff09;、服务质量目标&#xff08…

上半年巴比食品增收不增利,下半年失速的团餐业务能否“复苏”?

随着生活节奏逐渐加快&#xff0c;“宅经济”和“懒人经济”快速融合&#xff0c;人们对进餐便利性的要求逐渐提高&#xff0c;更适用于居家消费的食品应运而生&#xff0c;这其中速冻面点既便于烹饪&#xff0c;又方便快捷&#xff0c;因此其率先出圈获得了消费者青睐&#xf…

SparkSQL源码分析系列03-Antlr4分析测试

SparkSQL主要通过Antlr4定义SQL的语法规则&#xff0c;完成SQL词法&#xff0c;语法解析&#xff0c;最后将SQL转化为抽象语法树。所以有必要先了解下Antlr4的工作流程。 ANTLR4是什么&#xff1f; ANTLR 是 ANother Tool for Language Recognition 的缩写&#xff0c;官网&a…

Python:逢七拍腿游戏

场景模拟&#xff1a; 通过在 for 循环中使用 continue 语句实现计算拍腿次数&#xff0c;即计算从1到100&#xff08;不包括100&#xff09;&#xff0c;一共有多少个尾数为7或7的倍数这样的游戏&#xff0c;代码如下&#xff1a; total 99 # 记…