Vant picker 选择器 多级联动小白教程

虽然 Vant picker选择器网上有很多文章,但都是前端js写死的数据,并没有写道后端过来的数据如何处理、如何与选择器绑定,

今天我就来记录一下我的写法:

1.后台返回数据格式:

{
    "success": 1,
    "data": [
        {
            "children": [
                {
                    "id": "11111111",
                    "text": "123"
                }
            ],
            "id": "22222222",
            "text": "药房2"
        },
        {
            "children": "",
            "id": "33333333",
            "text": "药房a"
        },
        {
            "children": "",
            "id": "44444444",
            "text": "中药房2"
        }
    ],
    "code": "",
    "message": ""
}

解释:

"text": 组件会默认text为选择器显示的内容

”id“:id

2.wxml:

    <van-cell-group>
       <van-cell title-class="hwms-cell-title" title-width="225rpx" value-class="hwms-cell-content" title="仓库-库位" value="{{warehouseContent}}" bind:click="warehouse" />
    </van-cell-group>
    <van-popup  show="{{show}}" position="bottom" bind:close="hideBottom">
       <van-picker bind:change="onChange3" columns="{{ columns }}" confirm-button-text="确认" cancel-button-text="取消" show-toolbar="true" bind:confirm="selectWarehouse" bind:cancel="cancelSelect" />
    </van-popup>

3.js:

const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    show: false,
    warehouseContent: '点击选择', //输入框显示的内容
    columns: [], //对象数组,配置每一列显示的数据
  }, 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let that = this;
    //请求接口获得返回数据
    app.ajaxCall("/test/findAll", "", function (result) {
      var data = result.data;//后端返回的数据,见第一部中的json数据格式
      if (data.success == 1) {
        var citys = data.data;
        that.setData({
          columns: [{
            values: citys, // 设置的第一列的初始值
            className: "column1"
          },
          {
            values: citys[0].children,// 设置第二列的初始值
            className: "column2"
          }
          ]
        });
      }
    });
  },
  /**
   * 显示选择器
   */
  warehouse: function () {
    this.setData({ show: true });
  },
   /**
   * 隐藏选择器
   */
  cancelSelect() {
    this.setData({ show: false });
  },
   /**
   * 选择器确认选择
   */
  selectWarehouse(event) {
    var storeId = event.detail.value[0].id; //第一列的Id
    var storeName = event.detail.value[0].text;//第一列的文字
    var placeName = "";//第二列文字
    var placeId = '';//第二列Id
    var warehouseContent = ""; //选择框显示的文字
    if (event.detail.value[1]) {
      placeId = event.detail.value[1].id;//第二列的Id
      placeName = event.detail.value[1].text;//第二列的文字
      warehouseContent = storeName + "-" + placeName;//第一列第二列文字拼接
    }else{
      warehouseContent = storeName;//第二列没有值只显示第一列文字
    }
    this.setData({
      show: false,
      warehouseContent: warehouseContent,
    });
  },
  /**
   * 选择器改变选择项触发
   */
  onChange3(event) {
    const {
      picker,
      value,
      index
    } = event.detail;
    let ColumnIndex = picker.getColumnIndex(index);
    console.log(value);
    //改变第一列显示第二列的初识值
    picker.setColumnValues(index + 1, value[0].children == null ? '' : value[0].children);
  },
})

效果图:

 

 

 

 

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vant picker级联操作是指在 Vant UI 组件库中的 picker 组件中,可以通过多个级别的选择器来联选择数据,从而达到更加准确的筛选和选择目的。这种多级联操作在实际应用中非常常见,可以用于地区选择、商品分类、日期选择等场景。 Vant picker级联操作的实现步骤一般是:首先需要在 HTML 代码中添加 picker 组件并设置相应的属性,如 picker-options、columns 等。然后在 JS 代码中编写数据源和联的逻辑,一般采用数组或 JSON 格式的数据存储,通过监听选择器的 change 事件来实现级联选择效果。最后,还需要根据选择结果来进行相应操作,如显示选择结果、修改相关数据等。 与传统的单一选择器相比,Vant picker级联操作具有以下优点:首先,可以通过多个级别的选择器来筛选需要的数据,精度更高。其次,多级联操作可以让用户更加方便快捷地选择数据,提升用户体验。同时,多级联操作可以应用到很多不同的场景中,如地区、时间、分类等,具有很广泛的应用价值。 在实际开发中,如何灵活合理地应用 Vant picker级联操作也变得十分关键。需要根据实际业务需求和用户体验来进行设置,防止出现数据选择错误或操作繁琐的问题。因此,需要在开发前进行需求分析和用户调研,结合 Vant picker级联操作的实现原理和技巧,使得应用的多级联效果更加出色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值