vue基于mint-ui實(shí)現(xiàn)城市選擇三級(jí)聯(lián)動(dòng)
項(xiàng)目是基于vue2 的移動(dòng)端項(xiàng)目,供大家參考,具體內(nèi)容如下
1、實(shí)際效果
地址三級(jí)聯(lián)動(dòng) mint-ui picker.png
2、首先你需要去下載一個(gè)包含中國(guó)省份,城市,區(qū)縣的數(shù)據(jù)
如下:
(這個(gè)地址里面包含二級(jí)聯(lián)動(dòng)數(shù)據(jù),三級(jí)聯(lián)動(dòng)數(shù)據(jù),四級(jí)聯(lián)動(dòng)數(shù)據(jù)等,找到自己需要的)
(一個(gè)更好的中國(guó)地區(qū)數(shù)據(jù),推薦用這個(gè))
3、具體代碼
主要是用到了mint-ui的picker組件,關(guān)于mint-ui的使用就自行看官網(wǎng)
Ⅰ、html組件
<div> <mt-picker :slots="myAddressSlots" @change="onMyAddressChange"></mt-picker> <p>地址3級(jí)聯(lián)動(dòng):{{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]]){ //這個(gè)判斷類(lèi)似于v-if的效果(可以不加,但是vue會(huì)報(bào)錯(cuò),很不爽) picker.setSlotValues(1,Object.keys(myaddress[values[0]])); // Object.keys()會(huì)返回一個(gè)數(shù)組,當(dāng)前省的數(shù)組 picker.setSlotValues(2,myaddress[values[0]][values[1]]); // 區(qū)/縣數(shù)據(jù)就是一個(gè)數(shù)組 this.myAddressProvince = values[0]; this.myAddressCity = values[1]; this.myAddresscounty = values[2]; } }, }, mounted(){ this.$nextTick(() => { //vue里面全部加載好了再執(zhí)行的函數(shù) (類(lèi)似于setTimeout) this.myAddressSlots[0].defaultIndex = 0 // 這里的值需要和 data里面 defaultIndex 的值不一樣才能夠初始化 //因?yàn)槲覜](méi)有看過(guò)源碼(我猜測(cè)是因?yàn)閿?shù)據(jù)沒(méi)有改變,不會(huì)觸發(fā)更新) }); } } </script>
參考文章 vue mint-ui 實(shí)現(xiàn)省市區(qū)街道4級(jí)聯(lián)動(dòng)(mint-ui picker 的四級(jí)聯(lián)動(dòng))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的實(shí)現(xiàn)
- vue elementUI使用tabs與導(dǎo)航欄聯(lián)動(dòng)
- vue基于mint-ui的城市選擇3級(jí)聯(lián)動(dòng)的示例
- 詳解Vue、element-ui、axios實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)
- VUE2 前端實(shí)現(xiàn) 靜態(tài)二級(jí)省市聯(lián)動(dòng)選擇select的示例
- Vue.js組件tree實(shí)現(xiàn)省市多級(jí)聯(lián)動(dòng)
- vue mint-ui 實(shí)現(xiàn)省市區(qū)街道4級(jí)聯(lián)動(dòng)示例(仿淘寶京東收貨地址4級(jí)聯(lián)動(dòng))
- Vue實(shí)現(xiàn)左右菜單聯(lián)動(dòng)實(shí)現(xiàn)代碼
- vue左右側(cè)聯(lián)動(dòng)滾動(dòng)的實(shí)現(xiàn)代碼
- vue實(shí)現(xiàn)列表左右聯(lián)動(dòng)效果
相關(guān)文章
用Axios Element實(shí)現(xiàn)全局的請(qǐng)求loading的方法
本篇文章主要介紹了用Axios Element實(shí)現(xiàn)全局的請(qǐng)求loading的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03echarts.js 動(dòng)態(tài)生成多個(gè)圖表 使用vue封裝組件操作
這篇文章主要介紹了echarts.js 動(dòng)態(tài)生成多個(gè)圖表 使用vue封裝組件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Vue axios庫(kù)避免重復(fù)發(fā)送請(qǐng)求的示例介紹
Axios是一個(gè)基于promise的HTTP庫(kù),可以用在瀏覽器和node.js中。axios是目前最優(yōu)秀的HTTP請(qǐng)求庫(kù)之一,我們封裝axios請(qǐng)求也是為了讓代碼看的更加清晰,后期好維護(hù)2023-02-02vue?parseHTML函數(shù)源碼解析start鉤子函數(shù)
這篇文章主要為大家介紹了vue?parseHTML函數(shù)源碼解析start鉤子函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07使用Vue實(shí)現(xiàn)調(diào)用接口加載頁(yè)面初始數(shù)據(jù)
今天小編就為大家分享一篇使用Vue實(shí)現(xiàn)調(diào)用接口加載頁(yè)面初始數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10vue2從數(shù)據(jù)變化到視圖變化之nextTick使用詳解
這篇文章主要為大家介紹了vue2從數(shù)據(jù)變化到視圖變化之nextTick使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Vue實(shí)現(xiàn)模糊查詢(xún)filter()實(shí)例詳解
因?yàn)榻赵趯W(xué)習(xí)并使用VUE,客戶(hù)有一個(gè)要求,要輸入框可模糊查詢(xún)并帶有下拉提示的應(yīng)用,數(shù)據(jù)從接口取,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)模糊查詢(xún)filter()的相關(guān)資料,需要的朋友可以參考下2023-04-04TypeScript基本類(lèi)型 typeof 和keyof案例詳解
這篇文章主要介紹了TypeScript基本類(lèi)型 typeof 和keyof案例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10