小程序picker 多选 picker组件的bindcolumnchange不触发

### 微信小程序实现省市二级联动择 在微信小程序中,省市二级联动择可以通过`<picker>`组件来完成。此组件允许创建一个择器,每一列代表同的级别(如省和市)。为了使这个过程更加高效并减少初始加载时间,可以采用懒加载的方式,在用户择了某个省份之后再去请求对应的市级数据。 #### HTML结构 HTML部分主要由一个带有特定属性的`<picker>`标签组成: ```html <view class="section"> <view class="section__title">省市二级联动demo</view> <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}"> <view class="picker"> 当前择:{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}} </view> </picker> </view> ``` 这段代码定义了一个器,并绑定了两个事件处理函数用于监听变化以及单列的变化[^4]。 #### JavaScript逻辑 JavaScript负责管理状态更新及响应用户的交互行为。下面是一个简单的例子展示如何初始化数据、设置默认索引值以及编写回调方法来处理用户输入: ```javascript Page({ data: { multiArray: [[], []], multiIndex: [0, 0] }, onLoad() { this.loadProvinces(); // 加载省级列表 }, loadProvinces(){ wx.request({ url: 'your_api_endpoint_for_provinces', success:(res)=>{ const provinces = res.data; let cities = []; if (provinces.length > 0){ this.loadCities(provinces[0].id); // 默认加载第一个省份的市列表 } this.setData({ 'multiArray[0]' : provinces.map(item => item.name), 'multiArray[1]' : cities, }); } }) }, loadCities(provinceId){ wx.request({ url:`your_api_endpoint_for_cities/${provinceId}`, success:(res)=>{ const cities = res.data; this.setData({ 'multiArray[1]' : cities.map(city=>city.name) }); } }) }, bindMultiPickerColumnChange(e) { var column = e.detail.column; switch(column){ case 0: this.loadCities(this.multiArray[0][e.detail.value]); break; } this.setData({ multiIndex:e.detail.value }); }, bindMultiPickerChange(e) { console.log('picker发送择改变', e.detail.value); } }) ``` 上述脚本实现了当页面加载时自动获取所有可用的省份名称,并且每当用户改变了所中的省份后会触发相应的市查询操作。 #### 数据格式说明 对于从服务器接收到的数据,通常期望它们具有如下形式: - **省份**: `{ id: number|string, name:string }` - **市**: 类似于省份的对象数组,其中每个对象都包含唯一的ID及其显示的名字字符串。 这种设计使得前端能够轻松地映射项到实际的位置信息上,同时也方便后续扩展至更深层次的地级行政区划单位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值