效果图:
源码index.wxml
<import src="../../templates/address-temp"/>
<template is="addresspicker"
data="{{provinceindex:city.provinceindex,cityindex:city.cityindex,districtindex:city.districtindex,province:city.province,
city:city.city[city.selectedprovince],district:city.district[city.selectedcity]}}"/>
index.js
var city = require("../../utils/city.js");
page({
data: {},
onload: function() {
console.log('onload...');
var that = this;
city.init(that);
}
});
address-temp.wxml
<?xml version="1.0" encoding="utf-8"?>
<template name="addresspicker">
<view style="display:flex;margin:0;height:100%;align-items: center;justify-content: center">
<view style="width:100%;">
<picker bindchange="bindprovincechange" value="{{provinceindex}}" range="{{province}}">
<view style="text-align:center;padding:10rpx;font-size:0.8rem">{{province[provinceindex]}}</view>
</picker>
</view>
<view style="width:100%;">
<picker bindchange="bindcitychange" value="{{cityindex}}" range="{{city}}">
<view style="text-align:center;padding:10rpx;font-size:0.8rem">{{city[cityindex]}}</view>
</picker>
</view>
<view style="width:100%;">
<picker bindchange="binddistrictchange" value="{{districtindex}}" range="{{district}}">
<view style="text-align:center;padding:10rpx;font-size:0.8rem">{{district[districtindex]}}</view>
</picker>
</view>
</view>
</template>
city.js
var city = {
province: ['-请选择-', '福建省'],
city: {
'-请选择-': ['-请选择-'],
'福建省': ['福州市', '厦门市', '泉州市']
},
district: {
'-请选择-': ['-请选择-'],
'福州市': ['鼓楼区', '台江区'],
'厦门市': ['湖里区', '集美区'],
'泉州市': ['晋江市', '安溪县']
},
provinceindex: 0,
cityindex: 0,
districtindex: 0,
selectedprovince: '-请选择-',
selectedcity: '-请选择-',
selecteddistrct: '-请选择-'
};
function init(that) {
that.setdata({
'city': city
});
var bindprovincechange = function(e) {
var city = that.data.city;
that.setdata({
'city.provinceindex': e.detail.value,
'city.selectedprovince': city.province[e.detail.value],
'city.selectedcity': city.city[city.province[e.detail.value]][0],
'city.selecteddistrct': city.district[city.city[city.province[e.detail.value]][0]][0],
'city.cityindex': 0,
'city.districtindex': 0
});
};
var bindcitychange = function(e) {
var city = that.data.city;
that.setdata({
'city.cityindex': e.detail.value,
'city.selectedcity': city.city[city.selectedprovince][e.detail.value],
'city.districtindex': 0,
'city.selecteddistrct': city.district[city.city[city.selectedprovince][e.detail.value]][0]
});
};
var binddistrictchange = function(e) {
var city = that.data.city;
that.setdata({
'city.districtindex': e.detail.value,
'city.selecteddistrct': city.district[city.selectedcity][e.detail.value]
});
};
that['bindprovincechange'] = bindprovincechange;
that['bindcitychange'] = bindcitychange;
that['binddistrictchange'] = binddistrictchange;
}
module.exports = {
init: init
}
以上就是小程序组件开发中的有关省市区三级联动的相关介绍的详细内容。