小程序:三列选择器

三列选择器

<picker mode='multiSelector' range='{'{mutilarr}'}' value='{'{mutindex}'}' bindcolumnchange='columchange' bindchange='changemutil'>
  <view>{`{mutilarr[0][mutindex[0]]}`}年-{`{mutilarr[1][mutindex[1]]}`}月-{`{mutilarr[2][mutindex[2]]}`}日</view>
</picker>

在data里面声明变量

 data: {
    mutilarr:[],//总
    mutindex:[0,0,0],
    montharr:'',
    dayarr:'',
    picerArr:'',
  }

在进入页面请求数据并渲染,此步骤可以根据业务逻辑更改

 onShow: function () {
    let that=this;
    wx.request({
      url: 'https://www.easy-mock.com/mock/5c34ac7190862b0b0cf50397/Smlevue/wx',
      method:"get",
      success(res){
        console.log(res);
        let dataArr=res.data.tuanqi;
        let yearArr=[];
        let montharr=[];
        let dayArr=[];
        let picerArr=[];
        for(let i=0;i<dataArr.length;i++){
          yearArr[i]=dataArr[i].year;
          montharr[i]=[];
          dayArr[i]=[];
          picerArr[i]=[];
          let mouthelist=dataArr[i].montharr;
          for(let y=0;y<mouthelist.length;y++){
            montharr[i][y] = mouthelist[y].month;
            dayArr[i][y]=[];
            picerArr[i][y]=[];
            let daylist = mouthelist[y].dayarr;
            for(let k=0;k<daylist.length;k++){
              dayArr[i][y][k]=daylist[k].day;
              picerArr[i][y][k] = daylist[k].price
            }
          }
        };
        let mutilarr=[];
        mutilarr[0]=yearArr;
        mutilarr[1]=montharr[0];/*拿到所有月份的中的第一列数据*/
        mutilarr[2]=dayArr[0][0];/*拿到所有天数中第一列数据*/
        console.log(mutilarr)
        that.setData({
          mutilarr: mutilarr,
          montharr:montharr,
          dayArr:dayArr,
          picerArr:picerArr
        })
      }
    })
  }

监听picker 变换进行数据改变

某一列的值改变时触发

 
  columchange(e){
    console.log("修改的列为",e)
    let that=this;
    let column = e.detail.column;/*改变了第几列*/
    let value=e.detail.value;/*下标*/
    let yeaArr=this.data.yeaArr;
    let montharr=this.data.montharr;
    let dayArr=this.data.dayArr;
    let mutindex = this.data.mutindex;
    let mutilarr = this.data.mutilarr;
    mutindex[column]=value;/*改变选中的下标*/
    for(let i=column+1;i<mutindex.length;i++){
      /*被修改的列旁边的列下标为1*/
      mutindex[i]=0;
    }
    console.log(mutindex) /*被修改的列旁边的列下标为1*/
    console.log(column)
    console.log(montharr)
    console.log(dayArr)
    switch (column) {/*当滑动第一列的时候也就是case等于0的时候,改变mutilarr数组里面的第二和第三的值*/
      case 0:
        mutilarr[1] = montharr[mutindex[0]];/*获取年份对应的所有月份*/
        mutilarr[2] = dayArr[mutindex[0]][mutindex[1]];/*获取年份对应的所有月份中第一个月份对应的天数*/
        break;
      case 1:
        mutilarr[2] = dayArr[mutindex[0]][mutindex[1]];/*第二列改变的时候获取所选月份对应的天数*/
     
    };
    that.setData({
      mutindex: mutindex,
      mutilarr: mutilarr
    })
  },

value 改变时触发 change 事件

  changemutil(e){
    let i = e.detail.value;
    /*[i[0]][i[1]][i[2]]获取选中的天数对应的价格*/
    var pricelist = this.data.picerArr[i[0]][i[1]][i[2]];
    console.log(pricelist)
  },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值