有些时候,三级联动业务场景并不只是全国地区选择,可能还涉及到自定义分类的三级联动,这时就需要使用微信的多列选择器。
如果只是一列字段,或者每次拖动一次都去服务端取,会比较容易。 如果想一次定义好json
,关联数据相对比较复杂,此案例json
结构如下:
效果如下
实现过程
1.WXML(这是一段微信官方文档的代码)
<view class="section">
<view class="section__title">普通选择器</view>
<picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
<view class="picker">
当前选择:{{array[index]}}
</view>
</picker>
<picker bindchange="bindPickerChange1" value="{{index}}" range="{{array}}">
<view class="picker">
当前选择:{{array[index]}}
</view>
</picker>
</view>
2.js 逻辑部分
// 第一步 data 定义数据
ssl:地区json
//第二步 设置默认三级联动数据
Onload
//获取省市区json
var ssls = this.data.ssl;
//定义对应变量
var sheng = [];
var shi = [];
var qu = [];
for (var i in ssls) {
sheng.push(ssls[i].p_name)
if (i == 0) {
for (var u in ssls[i].p_city) {
// console.log(ssls[i].p_city[u].c_name)
shi.push(ssls[i].p_city[u].c_name)
for (var j in ssls[i].p_city[u].p_district) {
// console.log(ssls[i].p_city[u].c_name)
qu.push(ssls[i].p_city[u].p_district[j].d_name)
}
}
}
}
console.log(sheng, shi);
this.setData({
multiArray: [sheng, shi, qu]
});
//第三步:选择对应的value值改变
bindMultiPickerChange: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
multiIndex: e.detail.value
})
},
//第四步:下拉拖动选项事件(这里只需要处理第一栏,与第二栏【因为第三栏拖动的时候,没有第四栏关联变动了,关于此处讲的栏,请看代码后图1-3】)
bindMultiPickerColumnChange: function (e) {
console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
var data = {
multiArray: this.data.multiArray,
multiIndex: this.data.multiIndex
};
data.multiIndex[e.detail.column] = e.detail.value;
switch (e.detail.column) {
case 0:
this.setData({
thisSheng: e.detail.value
})
//此处是拖动第一栏的时候处理
var row = this.getCity(e.detail.value);
data.multiArray[1] = row[0];
data.multiArray[2] = row[1];
//此处默认选中第一项
data.multiIndex[1] = 0;
data.multiIndex[2] = 0;
break;
case 1:
//此处是拖动第二栏的时候处理
var row = this.getCity(this.data.thisSheng, e.detail.value);
console.log(row);
data.multiArray[2] = row[1];
data.multiIndex[2] = 0;
console.log(data.multiIndex);
break;
}
this.setData(data);
},
关键处理函数
// 获取城市信息
getCity: function (x, y = 999, z = 999) {
console.log("xy", x, y);
var ssls = this.data.ssl;
var shi = [];
var qu = [];
for (var i in ssls) {
if (i == x) {
for (var u in ssls[i].p_city) {
shi.push(ssls[i].p_city[u].c_name)
if (u == y) {
for (var j in ssls[i].p_city[u].p_district) {
qu.push(ssls[i].p_city[u].p_district[j].d_name)
}
break;
}
if (y == 999) {
for (var j in ssls[i].p_city[u].p_district) {
qu.push(ssls[i].p_city[u].p_district[j].d_name)
}
}
}
break;
}
}
console.log(shi);
return [shi, qu];
},
代码下载地址:https://github.com/magic007/weApp/tree/master/multiSelector
基本手动实现一次官方的全国地区选择功能,只是相比官方更灵活,能添加更多种类型。
怎么收藏这篇文章?
不错不错,我喜欢看
你的文章让我心情愉悦,真是太棒了! http://www.55baobei.com/rdEtu6QgDX.html
你的才华让人惊叹,你是我的榜样。 http://www.55baobei.com/GAUcjaWKL4.html
《魔力麦克3:最后之舞》喜剧片高清在线免费观看:https://www.jgz518.com/xingkong/83737.html
你的才华让人瞩目,期待你的更多文章。 http://www.55baobei.com/Jbm9BVFejL.html
你的文章让我感受到了快乐,每天都要来看一看。 http://www.55baobei.com/mzmnig3ht3.html
你的文章让我心情愉悦,真是太棒了! https://www.4006400989.com/qyvideo/97381.html
你的文章让我感受到了艺术的魅力,谢谢! http://www.55baobei.com/Vv0IO7VN72.html
你的文章让我感受到了正能量,非常棒! http://www.55baobei.com/AWHKjHRKJk.html
你的文章充满了智慧,让人敬佩。 http://www.55baobei.com/ML5pLUjPmV.html
你的才华让人惊叹,请继续保持。 http://www.55baobei.com/0XSHH2OhSc.html
《鞭子与肉体》恐怖片高清在线免费观看:https://www.jgz518.com/xingkong/24300.html
你的文章内容非常精彩,让人回味无穷。 https://www.4006400989.com/qyvideo/88914.html
你的才华横溢,让人敬佩。 https://www.4006400989.com/qyvideo/17843.html
你的文章让我感受到了生活的美好,谢谢! https://www.yonboz.com/video/64243.html
每次看到你的文章,我都觉得时间过得好快。 https://www.yonboz.com/video/79276.html
《篮球兄弟第五季》欧美剧高清在线免费观看:https://www.jgz518.com/xingkong/113722.html
你的文章让我感受到了不一样的风景,谢谢分享。 https://www.yonboz.com/video/36806.html
每次看到你的文章,我都觉得时间过得好快。 http://www.55baobei.com/m5prthilmI.html
《返乡》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/21011.html
《阴阳无敌功》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/66809.html
《新唐老鸭俱乐部第二季》欧美动漫高清在线免费观看:https://www.jgz518.com/xingkong/51471.html
每次看到你的文章,我都觉得时间过得好快。 https://www.4006400989.com/qyvideo/61980.html
每次看到你的文章,我都觉得时间过得好快。 http://www.55baobei.com/J0K79J40Xd.html
《把关者们粤语》香港剧高清在线免费观看:https://www.jgz518.com/xingkong/41467.html
《新审死官》国产剧高清在线免费观看:https://www.jgz518.com/xingkong/147173.html
《追杀黑名单》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/165454.html
《红色之州》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/10167.html
哈哈哈,写的太好了https://www.lawjida.com/