当前位置: 首页 > article >正文

小程序中picker多列选择器

需求:实现类似省市联动的效果,选择第一列后,第二列数据变化

html部分:

<view class="section">
  <view>多列选择器</view>
  <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}">
    <view>
      当前选择:{{multiArray[0][multiIndex[0]]}} {{multiArray[1][multiIndex[1]]}}
    </view>
  </picker>
</view>

js部分:

Page({
  data: {
    multiArray: [['标题创作', '社媒文案', '故事创作'], []],
    multiIndex: [0, 0]
  },
  onLoad: function () {
    this.initSecondColumnData();
  },
  // 初始化第二列数据
  initSecondColumnData: function () {
    const firstColumnValue = this.data.multiArray[0][0];
    const secondColumnValues = this.generateSecondColumnValues(firstColumnValue);
    this.setData({
      'multiArray[1]': secondColumnValues
    });
  },
  // 根据第一列的选择值,动态生成对应的第二列数据
  generateSecondColumnValues: function (firstColumnValue) {
    let secondColumnValues = [];
    switch (firstColumnValue) {
      case '标题创作':
        secondColumnValues = ['标题提取', '小红书标题', '短视频标题', '文章标题', 'SEO文章'];
        break;
      case '社媒文案':
        secondColumnValues = ['社媒文案选项1', '社媒文案选项2', '社媒文案选项3'];
        break;
      case '故事创作':
        secondColumnValues = ['故事创作选项1', '故事创作选项2', '故事创作选项3'];
        break;
      default:
        break;
    }
    return secondColumnValues;
  },
  // 选择改变事件
  bindMultiPickerChange: function (e) {
    console.log('picker发送选择改变,携带值为', e.detail.value);
    this.setData({
      multiIndex: e.detail.value
    });
  },
  // 选择列变化事件
  bindMultiPickerColumnChange: function (e) {
    console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
    if (e.detail.column === 0) {
      // 第一列变化时,动态更新第二列数据
      const firstColumnValue = this.data.multiArray[0][e.detail.value];
      const secondColumnValues = this.generateSecondColumnValues(firstColumnValue);
      this.setData({
        'multiArray[1]': secondColumnValues
      });
    }
  }
});

效果图:


http://www.kler.cn/a/228989.html

相关文章:

  • CV与NLP经典大模型解读
  • 从零创建一个 Django 项目
  • Chrome谷歌浏览器如何能恢复到之前的旧版本
  • 【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例
  • vue自适应高度(缩放浏览器)
  • PyTorch使用教程(2)-torch包
  • Git工作中常用命令
  • 【Shell的运行原理以及Linux当中的权限问题】
  • Web后端:CSRF攻击及应对方法
  • Profinet转CANopen主站网关与堡盟编码器通讯案例
  • Spring Boot 依赖管理:spring-boot-dependencies vs spring-boot-starter-parent
  • 基于tidevice实现iOS app自动化使用详解
  • C#中的WebApi响应Accept头,自动返回xml或者json
  • 获取ping值最小IP
  • 2023年全球软件架构师峰会(ArchSummit上海站):核心内容与学习收获(附大会核心PPT下载)
  • 【漏洞库】O2OA系统
  • PSQL常用操作
  • springCloud gateway 防止XSS漏洞
  • Git的一些基本操作
  • [opencvsharp]C#基于Fast算法实现角点检测
  • openstack(T版)公有云--Dashboard服务
  • 常见的Web前端开发框架推荐
  • 【字符串】字典树
  • flutter 操作mysql
  • 深入理解TCP网络协议(3)
  • Ubuntu下的磁盘管理,分区管理,挂载和卸载分区