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

效果图:

相关推荐

  1. uView Picker 选择

    2024-02-03 08:00:07       67 阅读
  2. uniapp -- picker民族选择

    2024-02-03 08:00:07       52 阅读
  3. Element-UIel-time-picker时间选择无法选择

    2024-02-03 08:00:07       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 08:00:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 08:00:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 08:00:07       87 阅读
  4. Python语言-面向对象

    2024-02-03 08:00:07       96 阅读

热门阅读

  1. PyTorch中tensor.backward()函数的详细介绍

    2024-02-03 08:00:07       45 阅读
  2. ElasticSearch8升级变化

    2024-02-03 08:00:07       42 阅读
  3. 五大架构风格之三:独立构件风格

    2024-02-03 08:00:07       48 阅读
  4. 什么是ISO21434网络安全中的信息安全?-亚远景

    2024-02-03 08:00:07       58 阅读
  5. 【华为OD机试】 最小矩阵宽度【2024 C卷|100分】

    2024-02-03 08:00:07       47 阅读
  6. SouthernBiotech重组单克隆二抗

    2024-02-03 08:00:07       89 阅读