小程序中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
      });
    }
  }
});

效果图:

相关推荐
说私域6 小时前
开源AI大模型等“神秘组合”,如何颠覆零售业数字化转型?
人工智能·小程序·开源·流量运营·零售
weixin_1772972206911 小时前
旧物回收小程序,一键解决旧物处理难题
小程序
*拯16 小时前
小程序弹出层/抽屉封装 (抖音小程序)
小程序
半兽先生16 小时前
uniapp小程序获取手机设备安全距离
小程序·uni-app
weixin_1772972206916 小时前
盲盒一番赏小程序系统发展:创新玩法激发市场活力
小程序
ywyy679816 小时前
推客小程序系统开发:全栈式技术解决方案与行业赋能实践
大数据·人工智能·微信小程序·小程序·系统·推客系统·推客小程序
向明天乄16 小时前
uniapp,小程序中实现文本“展开/收起“功能的最佳实践
小程序·uni-app
ywyy679817 小时前
「数智化聚合分销生态系统」定制开发:重构全渠道增长引擎
大数据·搜索引擎·微信小程序·小程序·系统·聚合分销系统·聚合分销
PyAIGCMaster19 小时前
一个完整的项目示例:taro开发微信小程序
微信小程序·小程序·taro
奇妙方程式1 天前
微信小程序 地图 使用 射线法 判断目标点是否在多边形内部(可用于判断当前位置是否在某个区域内部)
微信小程序·小程序·地图