微信小程序picker组件两列关联使用方式


Posted in Javascript onOctober 27, 2020

在使用微信小程序picker组件时候,可以设置属性 mode = multiSelector 意为多列选择,关联选择,当第一列发生改变时侯,第二列甚至第三列发生相应的改变。但是官方文档上给的只有三列数据关联改变,没有两列改变得,我在写的时候琢磨了很久官方文档,于是写下此篇文档,作为总结。

结构文件

<picker mode="multiSelector" bindchange="PickerChange" bindcolumnchange="PickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}">
<view class="picker">
 {{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}}
 </view>
</picker>

bindcolumnchange 为每一列改变时候触发的函数,参数为 e ,

bindchange 为最终选中之后触发函数,参数为 e,

range 为绑定数组

js文件

data: {
 multiArray: [['飞禽', '走兽'], ['鹰', '鸽子', '麻雀', '鹦鹉']],
 multiIndex: [0, 0],
 arrColumn0: ['鹰', '鸽子', '麻雀', '鹦鹉'],
 arrColumn1: ['兔子', '狮子', '猎狗']
},
PickerChange(e) {
 var value = e.detail.value
 this.setData({
  multiIndex: value
 })
 console.log(this.data.multiArray[0][value[0]], this.data.multiArray[1][value[1]])
},
PickerColumnChange(e) {
 // 先定义数据,数组里面两个数组,意为两列,当第一列发生改变时侯,给数组重新赋值
 var obj = e.detail
 var multiArray = this.data.multiArray
 if (obj.column == 0 && obj.value == 0) {
  multiArray[1] = this.data.arrColumn0
 }
 if (obj.column == 0 && obj.value == 1) {
  multiArray[1] = this.data.arrColumn1
 }
 this.setData({
  multiArray: multiArray
 })
},

设计思路

multiArray 为弹出层显示数据,为一个数组,数组里面有几个数组,就是显示几列,我这是两个数组,即为显示两列,

multiIndex 为最终选中得数据索引,是函数 PickerChange 参数 e 里面包含得数组

e.detail.value 有两列,即会返回 [1,2] , 前面得 1 表示为,最终选择第一列得数组中索引为 1 对应的那个值。后边得 2 表示为,最终选中得为第二列数据中索引为 2 对应的值

arrColumn0 和 arrColumn1,是我定义得数组,可以从后台直接获取,但是一定要在 picker 组件弹出来之前,附上值。 multiArray 同理也可以这样赋值。

PickerColumnChange 函数,当每一列改变时候都会触发这个函数,

微信小程序picker组件两列关联使用方式

到此这篇关于微信小程序picker组件两列关联使用方式的文章就介绍到这了,更多相关微信小程序picker组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
JQuery中两个ul标签的li互相移动实现方法
May 18 Javascript
JavaScript实现广告的关闭与显示效果实例
Jul 02 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
Dec 26 Javascript
原生js实现吸顶效果
Mar 13 Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
微信小程序功能之全屏滚动效果的实现代码
Nov 22 Javascript
OpenLayers3加载常用控件使用方法详解
Sep 25 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 #Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 #Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 #Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 #Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 #Javascript
js实现简易ATM功能
Oct 27 #Javascript
Antd的table组件表格的序号自增操作
Oct 27 #Javascript
You might like
codeigniter框架批量插入数据
2014/01/09 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
python二维图制作的实例代码
2020/12/03 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
Python如何实现单例模式
2016/06/03 面试题
师德建设实施方案
2014/03/21 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
六查六看剖析材料
2014/10/06 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
Python实现照片卡通化
2021/12/06 Python
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript