首页 > 编程语言 >微信小程序picker动态数据,支持picker和文本同时使用

微信小程序picker动态数据,支持picker和文本同时使用

时间:2022-09-06 21:00:06浏览次数:68  
标签:picker function unitList index 微信 Doorplate let 动态数据 data

效果图

 

 如果按钮下没有内容会直接输出结果

wxml

<view class="tr">
  <view style="width: 30%;text-align: center;" wx:for="{{buildinglist}}" wx:for-index="i" wx:key="key">
    <view wx:if="{{buildinglist[i].unitList.length!=0}}">
      <picker mode="multiSelector" data-index="{{i}}" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArrayList[i]}}">
        <view data-index="{{i}}" data-text="{{item.building}}" class="building"bindtap="pickerPop">{{item.building}}</view>
      </picker>
    </view>
    <view wx:else>
      <view data-index="{{i}}" data-text="{{item.building}}" class="building" bindtap="JumpPop">{{item.building}}</view>
    </view>
  </view>
</view>

wxss

.tr {
padding: 20rpx;
font-size: 30rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
/* margin: 0 auto; */
position: relative;
justify-content: space-between;
}

.building {
  color: #07C160;
  border: 1px solid #07C160;
  padding: 10rpx 0;
  margin: 10rpx 0;
  border-radius: 10rpx;
}

js

// pages/lhxz/lhxz.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    buildinglist:[{
      building: "tree_select1",
      unitList: [{
        unit: "幼儿园",
          Id: 1,
          DoorplateList: [{
            Doorplate: "小班",
            },
            {
              Doorplate: "中班",
            },
            {
              Doorplate: "大班",
            }
          ]
        },
        {
          unit: "一级选项",
          Id: 1,
          DoorplateList: [{
            Doorplate: "一年级",
            },
            {
              Doorplate: "二年级",
            },
            {
              Doorplate: "三年级",
            }
          ]
        },
        {
          unit: "二级选项",
          Id: 1,
          DoorplateList: [{
            Doorplate: "7",
            },
            {
              Doorplate: "8",
            },
            {
              Doorplate: "9",
            }
          ]
        }
      ]
    }, {
      building: "tree_select2",
      unitList: []
    }],
    multiIndex: [0, 0],
  },
  //确定事件
  bindMultiPickerChange: function (e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    const index = e.currentTarget.dataset.index;
    let yhdz = this.data.buildinglist[index].building + "-" + this.data.multiArrayList[index][0][this.data.multiIndex[0]] + "-" + this.data.multiArrayList[index][1][this.data.multiIndex[1]];
    console.log(yhdz)
  },
  //普通view点击事件
  JumpPop(e) {
    const text = e.currentTarget.dataset.text;
    console.log(text)
  },
  openPop(e) {
    // 处理数据
    let multiArrayList = [];
    for (let i = 0; i < this.data.buildinglist.length; i++) {
      const unitList = this.data.buildinglist[i].unitList
      if (unitList.length > 0) {
        let firstItems = []
        let secondItems = []
        firstItems = unitList.map(it => it.unit) // 第一列数据
        const child = unitList[0]
        secondItems = child.DoorplateList.map(it => it.Doorplate) // 第二列数据
        let multiArray = [firstItems, secondItems];
        multiArrayList.push(multiArray);
      }
    }
    this.setData({
      multiArrayList,
    })
  },
    // 滚动选项,触发事件
  bindMultiPickerColumnChange: function (e) {
    this.data.multiIndex[e.detail.column] = e.detail.value;
    if (e.detail.column == 0) {
      const index = e.currentTarget.dataset.index;
      const value = this.data.multiIndex
      const unitList = this.data.buildinglist[index].unitList
      let firstItems = []
      let secondItems = []
      let selectValue1 = 0
      firstItems = unitList.map(it => it.unit) // 第一列数据
      selectValue1 = value.length > 0 ? value[0] : 0
      const child = unitList[selectValue1]
      secondItems = child.DoorplateList.map(it => it.Doorplate) // 第二列数据
      let multiArray = [firstItems, secondItems];
      let multiArrayList = [];
      multiArrayList[index] = multiArray;
      this.setData({
        multiArrayList,
      })
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onl oad: function (options) {
    this.openPop();//页面加载时处理数据
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

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

  },

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

  },

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

  }
})

 

标签:picker,function,unitList,index,微信,Doorplate,let,动态数据,data
From: https://www.cnblogs.com/qqxx/p/16663289.html

相关文章

  • 微信小程序苹果手机底部小黑条优化
    苹果官方推荐使用env(),constant()来适配,而env()和constant()函数有个必要的使用前提,当网页设置viewport-fit=cover的时候才生效。padding-bottom:constant(safe-area-ins......
  • 【小程序】同一微信号在微信开发工具上怎么切换小程序
    我的微信号绑定了多个小程序项目如果打开了微信开发者工具,怎么切换多个小程序 每个小程序项目的appid是不一样的  修改appid就可以了......
  • 微信公众号文章采集的几种方案
    方案一:基于搜狗入口在网上能搜索到的公众号文章采集相关的信息来看来看,这是最多、最直接、也是最简单的一种方案。一般流程是:搜狗微信搜索入口进行公众号搜索选取公......
  • 微信小程序websocket的使用
    微信小程序中使用websocket分为两步:一、现在微信公众平台的开发者工具中配置socket的域名   二、开始编写业务代码业务代码大致可以分成三个步骤:a.发起请求,建立......
  • Python导出微信公众号所有文章
    前言公司周年庆,行政的同事想让我帮个忙,把微信公众号的文章都导在一个文档里面,方便统计和检索。在网上找了一圈,大部分工具处于不可用状态,或者需要收费,于是花了一个多小时......
  • 微信开发注意
    1、打开微信开发者工具,选择公众号,复制下面地址http://demo.open.weixin.qq.com/jssdk放在地址栏打开,可能会卡多请求两次稍微等等。2、再打开自己的页面就可以了......
  • 【微信小程序】知识点:页面事件
    1下拉刷新1.1概念手指在屏幕上下拉滑动操作,重新加载页面数据的行为1.2启动下拉刷新的方式1.2.1实现局部下拉刷新1.3配置下拉刷新窗口的样式在全局或页面的.j......
  • python实现企业微信机器人自动发消息
    一)创建企业微信群机器人1)先创建一个测试用临时对话群操作步骤:先在手机端打开企业微信,点击右上角+按钮->发起群聊->联系人中选择2人点击确定,即可创建一个临时对话群2......
  • 微信小程序元素超出页面宽度的解决
    有时候可能会出现这种情况,如下图底部的添加店铺的按钮超出页面宽度了,直接在给按钮外面的盒子加一个css样式:box-sizing:border-box; 这样就正常显示了 ......
  • 关于微信支付API证书LINUX安装问题
    什么是ssl证书  SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。SSL证书就是遵守SSL协议,由受信任的数字......