小程序之地址四级联动

wxml

       <!-- 地址四级联动 -->
<view class="page-section" wx:if="{{!version}}">
<view class="page-section-title">选择地址</view>
<view class="weui-cell">
<picker name="node_id" mode="multiSelector" bindchange="bindPickerChange" bindcancel="bindcancel" bindcolumnchange="bindMultiPickerColumnChange" value="{{[xianxuanzeindex, zhenindex, cunindex, wangdianindex]}}" range="{{[xianxuanze,zhen,cun,wangdian]}}">
<view class="weui-cell">{{xianxuanze[xianxuanzeindex]}}-{{zhen[zhenindex]}}-{{cun[cunindex]}}-{{wangdian[wangdianindex]}}</view>
</picker>
</view>
</view>

js-bindPickerChange()函数 点击确认 触发

/* 地址 四级联动 value 值改变事件 */
bindPickerChange(e){
console.log(`确定事件:`,e);
let { xianxuanzeindex, zhenindex, cunindex, wangdianindex} = this.data;
if(xianxuanzeindex == 0 || zhenindex == 0 || cunindex == 0 || wangdianindex == 0){
wx.showToast({
title: `选择完整的地址`,
duration: 1000,
icon: `none`
})
}
},

js-bindMultiPickerColumnChange()函数 滚动picker 列 触发

/* 地址 四级联动 事件   */
bindMultiPickerColumnChange(e){
console.log(`四级联动:`,e);
let that = this;
let { column, value} = e.detail;
if( column == 0){
console.log(`cloum=0 触发`);
city();
function city(){
wx.request({
url: config.ONLINE_URL + api.parentid3 + that.data.xianxuanzelist[value - 1].id, //仅为示例,并非真实的接
method: `GET`,
header: {
‘authentication‘: ‘USERID ‘ + authentication,
‘content-type‘: ‘application/json‘
},
success(res) {
var zhen = that.data.zhen = [‘选择街道/乡镇‘]
if (res.data.code == ‘200‘) {
for (var i = 0; i < res.data.data.data.length; i++) {
zhen.push(res.data.data.data[i].title)
}
that.setData({
zhen: zhen,
zhenlist: res.data.data.data,
xianxuanzeindex: value,
zhenindex: 0,
cunindex: 0,
wangdianindex: 0,
})
} else {
wx.showModal({
title: ‘提示‘,
content: res.data.message,
success(res) {}
})
}
}
})
}
} else if( column == 1) {
console.log(`cloum=1 触发`);
city4();
function city4() {
wx.request({
url: config.ONLINE_URL + api.parentid4 + that.data.zhenlist[e.detail.value - 1].id, //仅为示例,并非真实的接口地址
method: `GET`,
header: {
‘authentication‘: ‘USERID ‘ + authentication,
‘content-type‘: ‘application/json‘
},
success(res) {
var cun = that.data.cun = [‘选择社区/村‘]
if (res.data.code == ‘200‘) {
for (var i = 0; i < res.data.data.data.length; i++) {
cun.push(res.data.data.data[i].title)
}
that.setData({
cun: cun,
cunlist: res.data.data.data,
zhenindex: value,
cunindex: 0,
wangdianindex: 0,
})
} else {
wx.showModal({
title: ‘提示‘,
content: res.data.message,
success(res) {}
})
}
}
})
}
} else if( column == 2) {
console.log(`cloum=2 触发`);
cun()
function cun(){
wx.request({
url: config.ONLINE_URL + api.parentid5678 + that.data.cunlist[value - 1].id, //仅为示例,并非真实的接口地址
method: `GET`,
header: {
‘authentication‘: ‘USERID ‘ + authentication,
‘content-type‘: ‘application/json‘
},
success(res) {
var wangdian = that.data.wangdian = [‘选择网格小区/村社‘]
if (res.data.code == ‘200‘) {
for (var i = 0; i < res.data.data.data.length; i++) {
wangdian.push(res.data.data.data[i].title)
}
that.setData({
wangdian: wangdian,
wangdianlist: res.data.data.data,
cunindex: value,
wangdianindex: 0,
})
} else {
wx.showModal({
title: ‘提示‘,
content: res.data.message,
success(res) {}
})
}
}
})
}
} else if( column == 3) {
console.log(`cloum=3 触发`)
let { wangdian} = that.data;
that.setData({
wangdianindex: value,
wangdian
})
}
},

tips: 请求函数没有封装,临时实现功能,仅供参考

*注意事项

1·wxml 中value值 是数组 几列 数组长度是几!

2·地址JSON数据包太大,bindcolumnchange 监听列事件 实现按需请求数据

3·wxml 中 range 值有几个数组就有几列

* 效果 图

技术分享图片
 
技术分享图片
技术分享图片

小程序之地址四级联动

原文:https://www.cnblogs.com/herotxl/p/15153540.html

以上是小程序之地址四级联动的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>