zoukankan      html  css  js  c++  java
  • 微信小程序picker组件两列关联使用方式

    在使用微信小程序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 函数,当每一列改变时候都会触发这个函数,

  • 相关阅读:
    另一个博客
    友情链接&部分题目的密码
    知识点汇总
    一些模板的调试样例
    摘抄
    通过代理连接Microsoft Store和更新Windows系统
    模电复习
    Codeforces Round #583 F Employment
    杂感(三)
    杂感(二)
  • 原文地址:https://www.cnblogs.com/jickma/p/13884409.html
Copyright © 2011-2022 走看看