本文实例为大家分享了微信小程序手动添加收货地址省市区联动的具体代码,供大家参考,具体内容如下
先看效果图
html部分
用小程序的piceker-view 嵌入页面的滚动选择器
<picker-view indicator-style="height: 50px;" style="width:100%; height: 400rpx;" bindchange="bindChange"> <picker-view-column class="selectItem"> <view class="tooth" wx:for="{{province}}" wx:key="this">{{item.name}}</view> </picker-view-column> <picker-view-column class="selectItem"> <view class="tooth" wx:for="{{city}}" wx:key="this">{{item.name}}</view> </picker-view-column> <picker-view-column class="selectItem"> <view class="tooth" wx:for="{{area}}" wx:key="this">{{item.name}}</view> </picker-view-column> </picker-view>
js部分
这部分代码其实是因为后端同学太懒了,数据没有整理就直接返回过来了。我人微言轻的,只好自己默默地整理了。
// 把数据格式化成页面现实的形式 formatCityData: function () { var that = this, region = that.data.region, selectItems = [], province = [], city = [], area = [], area_index = that.data.area_index, city_index = that.data.city_index, province_index = that.data.province_index; // 第一遍格式化数据, for (var i = 0; i < region.length; i++) { if (region[i].parent_id == 1) { var provinceItem = region[i]; var selectItem1 = { label: provinceItem.zh_name, provinceId: provinceItem.id, children: [] }; for (var j = 0; j < region.length; j++) { if (region[j].parent_id == provinceItem.id) { var cityItem = region[j]; var selectItem2 = { label: cityItem.zh_name, cityId: cityItem.id, children: [] }; selectItem1.children.push(selectItem2); for (var k = 0; k < region.length; k++) { if (region[k].parent_id == cityItem.id) { var areaItem = region[k]; var selectItem3 = { label: areaItem.zh_name, areaId: areaItem.id, children: [] }; selectItem2.children.push(selectItem3); } } } } selectItems.push(selectItem1); } } // 遍历所有的数据。将省的名字放在对应的数组中 for (let i = 0; i < selectItems.length; i++) { province.push({ name: selectItems[i].label, id: selectItems[i].provinceId }); } if (selectItems[province_index].children && selectItems[province_index].children) {// 判断选中的省级里面有没有市 if (selectItems[province_index].children[city_index]) { for (let i = 0; i < selectItems[province_index].children.length; i++) { city.push({ name: selectItems[province_index].children[i].label, id: selectItems[province_index].children[i].cityId }); } if (selectItems[province_index].children[city_index].children) { if (selectItems[province_index].children[city_index].children[area_index]) { for (let i = 0; i < selectItems[province_index].children[city_index].children.length; i++) { area.push({ name: selectItems[province_index].children[city_index].children[i].label, id: selectItems[province_index].children[city_index].children[i].areaId }); } } else { that.setData({ area_index: 0 }); for (let i = 0; i < selectItems[province_index].children[city_index].childre.length; i++) { area.push({ name: selectItems[province_index].children[city_index].children[i].label, id: selectItems[province_index].children[city_index].children[i].areaId }); } } } else { area.push({ name: province[province_index].children[city_index].label, id: province[province_index].children[city_index].areaId }); } } else { that.setData({ city_index: 0 }); for (let i = 0; i < selectItems[province_index].childre.length; i++) { city.push({ name: selectItems[province_index].children[i].label, id: selectItems[province_index].children[i].cityId }); } } } else { // 如果该省没有市,那么就把省的名字作为市和区的名字 city.push({ name: province[province_index].label, id: province[province_index].cityId }); area.push({ name: province[province_index].label, id: province[province_index].areaId }); } // 选择成功后把对应的数组赋值给相应的变量 that.setData({ province: province, city: city, area: area }); provincialCity = { province: { name: province[that.data.province_index].name, id: province[that.data.province_index].id, }, city: { name: city[that.data.city_index].name, id: city[that.data.city_index].id }, area: { name: area[that.data.area_index].name, id: area[that.data.area_index].id } } },
后台返回的格式如下:
// 选择城市 bindChange: function (e) { const val = e.detail.value; this.setData({ province_index: val[0], city_index: val[1], area_index: val[2] }); this.formatCityData(); },
前面说的是新增收获地址,后面是编辑
html部分
value就是用来回显之前选择的城市。
把整理好的省市区分别遍历一下,把当前的id与数据中的id作对比。把相对应的数据的下标给取出来。
this.data.province.map(function(val, key) { if (val.id === that.data.result.province.id) { provinceId = key; } return provinceId; }) this.setData({ province_index: provinceId }); this.formatCityData(); this.data.city.map(function(val, key) { if (val.id === that.data.result.city.id) { cityId = key; } return cityId; }) this.setData({ city_index: cityId }); this.formatCityData(); this.data.area.map(function (val, key) { if (val.id === that.data.result.area.id) { areaId = key; } return areaId; }) var lists = [provinceId, cityId, areaId]; this.setData({ cityShow: lists });
为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]