基于element ui封装的省市区三级联动

工作中总会遇到些头疼的事,例如想在elememt ui中找个三级联动,结果发现没有,于是自己封装了一个。具体代码如下:

<template>
    <div>
          <p>
            <el-select select v-model="sheng" placeholder = "请选择">
                <el-option v-for="item in allsheng" :value="item" :key = "item">{{item}}</el-option>
            </el-select>
            省
            <el-select v-model="shi" placeholder = "请选择" ref = "shi">
                <el-option v-for="item in allshi" :value="item" :key = "item">{{item}}</el-option>
            </el-select>
            市
            <el-select v-model="xian" placeholder = "请选择">
                <el-option v-for="item in allxian" :value = "item" :key = "item">{{item}}</el-option>
            </el-select>
            区

        </p>
        </div>
</template>
<script>
    export default{
        data(){
            return {

                sheng : "",
                shi : "",
                xian : ""

            }
        },
        computed : {
            allsheng(){
                console.log(this.sheng)
                    return citydata.map(item=>item.name);
                },
                allshi(){
                    console.log(this.shi)
                  if(this.sheng==''){
                    this.shi=''
                  }else{
                    return citydata.filter(item=>item.name == this.sheng)[0].city.map(item=>item.name);
                  }

                },
                allxian(){
                  console.log(this.xian)
                  if(this.sheng==''){
                    this.xian=''
                  }else{
                    var thecity = citydata.filter(item=>item.name == this.sheng)[0].city.filter(item=>item.name == this.shi)[0];
                    if(thecity){
                      return thecity.area;
                    }
                    return [];
                  }


                }
            },
         watch : {
                sheng(){
                    this.shi = "";
                    this.xian = "";
                },
                shi(){
                    this.xian ="";
                }
            }
    }
</script>

city.js是省市区的json(从某网站上拔下来的,具体就不提供了),我在index.html中引入的

1137c5ef968405fcf659cb343c170720f17.jpg

里面是这样子滴:

23752cbaa5e114890e41952c03371360dd1.jpg

我这是在vue项目中用的,所有封装成了组件,希望对你有所帮助

转载于:https://my.oschina.net/u/3869887/blog/1831502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值