微信小程序 ecshop地址三级联动实现实例代码
微信小程序ecshop地址3级联动实现实例代码
picker标签,官方给出的实例:
<viewclass="section"> <viewclass="section__title">地区选择器</view> <pickerbindchange="bindPickerChange"value="{{index}}"range="{{array}}"> <viewclass="picker"> 当前选择:{{array[index]}} </view> </picker> </view> Page({ data:{ array:['美国','中国','巴西','日本'], index:0, }, bindPickerChange:function(e){ console.log('picker发送选择改变,携带值为',e.detail.value) this.setData({ index:e.detail.value }) }, })
wxml页面:
<viewclass="add-listunder-line"> <viewclass="add-lab">收货地址</view> <viewclass="add-text"> <pickerclass="w-3"bindchange="bindPickerProvince"value="{{provinceIndex}}"range="{{province}}"> <viewclass="picker">{{province[provinceIndex]}}</view> </picker> <pickerclass="w-3"bindchange="bindPickerCity"value="{{cityIndex}}"range="{{city}}"> <viewclass="picker">{{city[cityIndex]}}</view> </picker> <pickerclass="w-3"bindchange="bindPickerDistrict"value="{{districtIndex}}"range="{{district}}"> <viewclass="picker">{{district[districtIndex]}}</view> </picker> </view> </view>
js页面:
varapp=getApp() Page({ data:{ motto:'jxcat', serverUrl:app.globalData.ajaxUrl, baseUrl:app.globalData.baseUrl, title:"收货地址", address_id:"", address:"", province:[], province_id:[],//后台返回的数据对应region_idcity,district与此相同 province_name:[],//后台返回的数据对应region_name provinceIndex:0,//wxml页面选择的选项,从0开始 provinceId:0,//根据wxml页面选择的选项获取到province_id:[]对应的region_id city:[]. city_id:[], city_name:[], cityIndex:0, cityId:0, district:[], district_id:[], district_name:[], districtIndex:0, districtId:0, }, onLoad:function(options){ //页面初始化options为页面跳转所带来的参数 varthat=this varget_data wx.checkSession({ success:function(){ //登录态未过期 wx.getStorage({ key:'wcx_session', success:function(sres){ get_data={ m:'api', c:'user', a:'edit_address', wcx_session:sres.data, } if(options.act=='edit'){ get_data={ m:'api', c:'user', a:'edit_address', id:options.id, wcx_session:sres.data, } } wx.request({ url:app.globalData.ajaxUrl, data:get_data, header:{ 'content-type':'application/json' }, success:function(res){ if(options.act=="edit"){ that.data.provinceId=res.data.consignee.province that.data.cityId=res.data.consignee.city that.data.districtid=res.data.consignee.district } for(vari=0;i<res.data.province_list.length;i++){{ that.data.province_id[i]=res.data.province_list[i].region_id//把region_id存入province_id that.data.province_name[i]=res.data.province_list[i].region_name//把region_name存入province_name if(res.data.consignee.province==res.data.province_list[i].region_id){ that.data.provinceIndex=i } }} for(vari=0;i<res.data.city_list.length;i++){{ that.data.city_id[i]=res.data.city_list[i].region_id that.data.city_name[i]=res.data.city_list[i].region_name if(res.data.consignee.city==res.data.city_list[i].region_id){ that.data.cityIndex=i } }} for(vari=0;i<res.data.district_list.length;i++){{ that.data.district_id[i]=res.data.district_list[i].region_id that.data.district_name[i]=res.data.district_list[i].region_name if(res.data.consignee.district==res.data.district_list[i].region_id){ that.data.districtIndex=i } }} that.data.address_id=options.id that.setData({ consignee:res.data.consignee, province:that.data.province_name, provinceIndex:that.data.provinceIndex, city:that.data.city_name, cityIndex:that.data.cityIndex, district:that.data.district_name, districtIndex:that.data.districtIndex }) } }) //request } }) }, fail:function(){ //登录态过期 wx.login() } }) }, bindPickerProvince:function(event){ varthat=this vargetId=event.detail.value//获取到wxml选择的选项对应的下标,从0开始 that.data.provinceId=that.data.province_id[getId]//根据获取到的下标获取到region_name对应的region_id wx.request({ url:app.globalData.ajaxUrl, data:{ m:'api', c:'public', a:'region', rtype:2, rparent:that.data.provinceId, }, header:{ 'content-type':'application/json' }, success:function(res){ for(vari=0;i<res.data.regions.length;i++){{ that.data.city_id[i]=res.data.regions[i].region_id that.data.city_name[i]=res.data.regions[i].region_name }} that.setData({ city:that.data.city_name, provinceIndex:getId, }) }, }) }, bindPickerCity:function(event){ varthat=this vargetId=event.detail.value that.data.cityId=that.data.city_id[getId] wx.request({ url:app.globalData.ajaxUrl, data:{ m:'api', c:'public', a:'region', rtype:3, rparent:that.data.cityId, }, header:{ 'content-type':'application/json' }, success:function(res){ for(vari=0;i<res.data.regions.length;i++){{ that.data.district_id[i]=res.data.regions[i].region_id that.data.district_name[i]=res.data.regions[i].region_name }} that.setData({ district:that.data.district_name, cityIndex:getId, }) }, }) }, bindPickerDistrict:function(event){ varthat=this vargetId=event.detail.value that.data.districtId=that.data.district_id[getId] that.setData({ districtIndex:getId, }) }, formSubmit:function(event){ varthat=this wx.checkSession({ success:function(){ //登录态未过期 wx.getStorage({ key:'wcx_session', success:function(sres){ wx.request({ url:app.globalData.ajaxUrl, data:{ m:'api', c:'user', a:'add_address', address_id:that.data.address_id, province:that.data.provinceId,//wxml页面选择的地址对应的region_id city:that.data.cityId, district:that.data.districtId, address:event.detail.value.address, consignee:event.detail.value.consignee, mobile:event.detail.value.mobile, zipcode:event.detail.value.zipcode, wcx_session:sres.data, }, header:{ 'content-type':'application/json' }, success:function(res){ console.log(res) wx.redirectTo({ url:'address' }) } }) //request } }) }, fail:function(){ //登录态过期 wx.login() } }) }, })
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!