項目是基于 vue2 的移動端項目
1、實際效果
2、首先你需要去下載一個包含中國省份减江,城市,區(qū)縣的數(shù)據(jù)
如下:
https://github.com/artiely/Administrative-divisions-of-China(里面包含二級聯(lián)動數(shù)據(jù),三級聯(lián)動數(shù)據(jù)梧税,四級聯(lián)動數(shù)據(jù)等,找到自己需要的)
https://github.com/modood/Administrative-divisions-of-China(一個更好的中國地區(qū)數(shù)據(jù)称近,推薦用這個)
3第队、具體代碼
主要是用到了mint-ui的picker組件,關于mint-ui的使用就自行看官網(wǎng)
Ⅰ 煌茬、html組件
<div>
<mt-picker :slots="myAddressSlots" @change="onMyAddressChange"></mt-picker>
<p>地址3級聯(lián)動:{{myAddressProvince}} {{myAddressCity}} {{myAddresscounty}}</p>
</div>
Ⅱ 斥铺、組件方法
<script>
import { Picker } from 'mint-ui';
import myaddress from '../../../static/address3.json' //引入省市區(qū)數(shù)據(jù)
export default {
name: '',
components: {
'mt-picker': Picker
},
props: {},
data () {
return {
myAddressSlots: [
{
flex: 1,
defaultIndex: 1,
values: Object.keys(myaddress), //省份數(shù)組
className: 'slot1',
textAlign: 'center'
}, {
divider: true,
content: '-',
className: 'slot2'
}, {
flex: 1,
values: [],
className: 'slot3',
textAlign: 'center'
},
{
divider: true,
content: '-',
className: 'slot4'
},
{
flex: 1,
values: [],
className: 'slot5',
textAlign: 'center'
}
],
myAddressProvince:'省',
myAddressCity:'市',
myAddresscounty:'區(qū)/縣',
}
},
created() {
},
methods: {
onMyAddressChange(picker, values) {
if(myaddress[values[0]]){ //這個判斷類似于v-if的效果(可以不加,但是vue會報錯坛善,很不爽)
picker.setSlotValues(1,Object.keys(myaddress[values[0]])); // Object.keys()會返回一個數(shù)組晾蜘,當前省的數(shù)組
picker.setSlotValues(2,myaddress[values[0]][values[1]]); // 區(qū)/縣數(shù)據(jù)就是一個數(shù)組
this.myAddressProvince = values[0];
this.myAddressCity = values[1];
this.myAddresscounty = values[2];
}
},
},
mounted(){
this.$nextTick(() => { //vue里面全部加載好了再執(zhí)行的函數(shù) (類似于setTimeout)
this.myAddressSlots[0].defaultIndex = 0
// 這里的值需要和 data里面 defaultIndex 的值不一樣才能夠初始化
//因為我沒有看過源碼(我猜測是因為數(shù)據(jù)沒有改變邻眷,不會觸發(fā)更新)
});
}
}
</script>
參考文章 http://www.cnblogs.com/coolslider/p/7076390.html (mint-ui picker 的四級聯(lián)動)