小程序中picker多列选择器

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

html部分:

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部分:

javascript 复制代码
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
      });
    }
  }
});

效果图:

相关推荐
LT101579744410 小时前
2026年在线兼容性测试工具推荐|零部署网页 / APP / 小程序实测对比
测试工具·小程序
码农客栈13 小时前
小程序学习(二十八)之“订单列表”
小程序
这是个栗子18 小时前
uni-app 微信小程序开发:常用事件指令(@xxx)(一)
微信小程序·小程序·uni-app
2601_962344621 天前
计算机毕业设计之基于大数据的投保数据的分析系统的设计与实现
大数据·人工智能·深度学习·机器学习·信息可视化·小程序·课程设计
黑黑的独立开发笔记2 天前
「 简记往来」第十五篇:小程序性能优化——首屏从2.5秒到1.2秒
性能优化·小程序·首屏优化·分包加载·setdata·简记往来
m0_5261194018 天前
iconfont我修改好颜色,但是在小程序项目是黑色的
小程序
2601_9567436819 天前
2026 上海小程序开发甄选:源码、云函数、跨端兼容技术评判
小程序·开发经验·上海
IT_张三19 天前
CSDN-项目分享-暑期备考小程序
小程序
IsJunJianXin19 天前
pdd小程序 cdp 保存响应体
linux·服务器·小程序·pdd小程序·拼多多响应体解密·小程序cdp·拼多多rpc取响应体
Geek_Vison19 天前
APP瘦身实战:从80MB+砍到15MB——基于小程序容器技术剥离APP非核心业务的实践分享
小程序·uni-app·mpaas