最近想实现小程序中地址方面的省市县的三级联动功能,最开始以为微信没有提供这样的功能,我就利用picker-view自己实现了这个功能,后面发现可以直接利用picker来实现,我接下来介绍两种方法,picker最好实现,直接调用即可,picker-view需要自己设计。
picker, 在微信开放文档中小程序的组件-表单组件中就可以看到,
利用picker主要就是利用其中的mode属性 ,mode属性包含
selector | 普通选择器 | |
multiSelector | 多列选择器 | |
time | 时间选择器 | |
date | 日期选择器 | |
region | 省市区选择器 |
我们只需要把mode属性设置为region 即可使用,接下来看怎么使用
<!-- wxml -->
<picker mode="region" bindchange="bindRegionChange">
<view>
我的地址:{{myregion[0]}} {{myregion[1]}} {{myregion[2]}}
</view>
</picker>
我们只需要把mode设置为region属性,然后绑定一个change函数"bingRgionChange",当我们选择地址的时候picker回返回一个地址,其中myregion是我自己的地址,每次change函数发生的时候,我会重新复制给myregion,看一下js文件中怎么写的
Page({
data: {
myregion: ["北京市", "市辖区", "东城区"]
},
bindRegionChange:function(e){
console.log(e) //查看事件返回值
this.setData({myregion:e.detail.value}) //重新复制给myregion
}
})
看一下e的参数有哪些,我点击文字,选择一个地址,然后看返回的值:
可以看到detail返回了三个结果code,postcode和value,很明显value就是我选的那个地址,只需要将这个地址重新赋值给myregion就可以了, code 是统计用区划代码,postcode 是邮政编码,这样我们就实现了三级联动的功能