uni-app,picker实现联机选择器,二列, 后台反时间实现联动

本文介绍了如何使用 Vue.js 实现一个带有二级联动功能的 picker 组件,通过dataSource和classifyArr管理数据,当用户选择一级分类时,自动填充二级分类选项。同时,展示了获取数据源、处理分类选择变化以及判断条件加载提货点时间的详细步骤。
摘要由CSDN通过智能技术生成

1.实现二级联动
在这里插入图片描述
标签内写

  <picker class="item-picker" mode="multiSelector" range-key="name" @change="classifyChange" @columnchange="columnchange" 
  :value="classifyIndex"	:range="classifyArr">
		<view>	{{name}} </view>
  </picker>
 

data内写

                dataSource: [],
				name: "请选择时间",
				classifyArr: [[],[], // picker - 数据源
				classifyIndex: [0, 0], // picker - 索引
				childArr: [], // 二级分类数据源

methods内写

  // 获取数据源并分出一级二级
    getAllClassify() {
    //虚拟的数据
      let newarr = [
        {
          dateTime: "08-19",
          hourTimes: ["下午(15:09-18:00)", "晚上(18:00-20:00)"],
        },
        {
          dateTime: "08-20",
          hourTimes: ["下午(15:09-14:00)", "晚上(17:00-20:00)"],
        },
        {
          dateTime: "08-21",
          hourTimes: ["下午(16:09-18:00)", "晚上(19:00-20:00)"],
        },
        {
          dateTime: "08-23",
          hourTimes: ["下午(15:09-18:00)", "晚上(18:00-20:00)"],
        },
      ];
      let newdata = newarr.map((item, index) => {
        let obj = {};
        obj.id = index + 1;
        obj.name = item.dateTime;
        let child = item.hourTimes.map((item) => {
          let childObj = {};
          obj.id = index + 2;
          childObj.name = item;
          return childObj;
        });
        obj.child = child;
        return obj;
      });
      this.dataSource = newdata;
      for (let i = 0; i < newdata.length; i++) {
        // 将数据源中的二级分类 push 进 childArr,作为二级分类的数据源
        this.childArr.push(newdata[i].child);
      }

      // 一级分类的数据源
      this.classifyArr[0] = newdata;

      // 第一次打开时,默认给一级分类添加它的二级分类
      this.classifyArr[1] = this.childArr[0];
    },

    // 选择商品分类
    classifyChange(e) {
      let value = e.target.value;
      this.classifyIndex = value;
      if (this.classifyArr[0].length != 0) {
        this.name = this.classifyArr[0][this.classifyIndex[0]].name;
        this.pickInfo[2].val = this.name;
      }
      if (this.classifyArr[1].length != 0) {
        this.name += "," + this.classifyArr[1][this.classifyIndex[1]].name;
        this.pickInfo[2].val = this.name;
      }
    },

    // 获取二级分类
    columnchange(e) {
      // 当滚动切换一级分类时,为当前的一级分类添加它的子类
      if (e.detail.column == 0) {
        // #ifdef H5
        // 在小程序中直接赋值无效  H5 可直接赋值
        this.classifyArr[1] = this.childArr[e.detail.value];
        // #endif
        // #ifdef MP-WEIXIN
        // 在 H5 环境下 $set 会导致一级分类无法滚动, 小程序正常运行
        this.$set(this.classifyArr, 1, this.childArr[e.detail.value]);
        // #endif
      }
    },

在这里插入图片描述
注意点击切换的时候,选择弹框会自动弹出,
如果需求,要求提货点有数据以后才能选择提货点时间,这里就要之行判断一下

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值