[Vue]实现城市选择三级联动

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>城市选择三级联动</title>
</head>

<body>
    <div id="app" v-cloak>
        <select v-model="prov" @click="updateCity">
            <option v-for="(v,i) in arr" :key="i">{{v.name}}</option>
        </select>
        <select v-model="city" @click="updateDistrict">
            <option v-for="(v,i) in cityArr" :key="i">{{v.name}}</option>
        </select>
        <select v-model="district" v-if="district">
            <option v-for="(v,i) in districtArr" :key="i">{{v.name}}</option>
        </select> 
    </div>
    <script src="../../js/vue.min.js"></script>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                arr: [
                    {
                        name: '北京',
                        sub: [
                            { name: '请选择', sub: [] },
                            {
                                name: '北京', sub: [
                                    { name: '东城区' }, { name: '西城区' }, { name: '崇文区' }, { name: '朝阳区' }, { name: '石景山区' }, { name: '房山区' }
                                ]
                            },

                        ]
                    },{
                        name:'广东省',
                        sub:[
                            { name: '请选择', sub: [] },
                            {
                                name: '广州市', sub: [
                                    { name: '荔湾区' }, { name: '越秀区' }, { name: '海珠区' }, { name: '天河区' }, { name: '白云区' }, { name: '黄埔区' },{name:'番禺区'}
                                ]
                            },
                            {
                                name: '深圳市', sub: [
                                    { name: '罗湖区' }, { name: '福田区' }, { name: '南山区' }, { name: '宝安区' }, { name: '龙岗区' }, { name: '盐田区' },{name:'番禺区'}
                                ]
                            }

                        ]
                    }
                ],
                prov: '北京',//当前省
                city: '北京',//市
                district:'',//区
                cityArr: [],//市循环数组
                districtArr: []//区循环数组

            },
            mounted: function () {
                console.log("mount之后");
                this.updateCity(); //初始化城市
            },
            methods: {
                updateCity() { //更新市的数据
                    this.arr.forEach(item => {
                        if (item.name == this.prov) {
                            this.cityArr = item.sub
                        }
                    });
                    this.city=this.cityArr[1].name;//赋初始值
                    this.updateDistrict(); //选择城市后,区联动
                },
                updateDistrict() {//更新区的数据
                    this.cityArr.forEach(item => {
                        if (item.name == this.city) {
                            this.districtArr = item.sub
                        }
                    }); 
                    this.district=this.districtArr[1].name;  //赋初始值
                }
            }
        });
    </script>
</body>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值