vue 前端使用 element-ui 实现省市级联动

最近用 vue 结合 element-ui 写了个省市级联动,由于是纯前端,故而用了 “ 死数据 ”

在这里插入图片描述

代码如下:

<template>
  <div>
      <el-form label-width="20px">
          <el-row :gutter="20">
              <el-col :span="8">
                <el-form-item label=''>
                    <el-select v-model="prov" @change="changeprov(prov)">
                        <el-option
                            v-for="item in provArr"
                            :key="item.vinceId"
                            :label="item.vince"
                            :value="item.vince"
                            type="text"
                            style="margin-right: 20px"
                        />
                    </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label=''>
                    <el-select v-model='city' @change="changecity"> 
                        <el-option
                            v-for="item in cityArr"
                            :key="item.id"
                            :label="item.label"
                            :value="item.label"
                            type="text"
                            style="margin-right: 20px"
                        />
                    </el-select>
                </el-form-item>
              </el-col>
          </el-row>
      </el-form>
    </div>
</template>
<script>
  export default {
    data() {
      return {
        provArr: [], // 省份
        cityArr: [], // 城市
        city: '', // 选中的城市
        prov: '', // 选中的省份
        cityALL: [
          {
            vince: "上海市",
            vinceId: "1",
            children: [
              { city: "1", label: "徐汇区" },
              { city: "2", label: "虹口区" },
              { city: "3", label: "黄浦区" },
              { city: "4", label: "杨浦区" },
              { city: "5", label: "金山区" },
              { city: "6", label: "松江区" },
              { city: "7", label: "闵行区" },
            ],
          },
          {
            vince: "北京市",
            vinceId: "2",
            children: [
              { city: "1", label: "朝阳区" },
              { city: "2", label: "宣武区" },
              { city: "3", label: "崇文区" },
              { city: "4", label: "东城区" },
              { city: "5", label: "西城区" },
              { city: "6", label: "海淀区" },
              { city: "7", label: "通州区" },
            ],
          },
        ],
      };
    },
    created() {},
    mounted() {},
    beforeMount () {
        this.changeprov()
    },
    watch :{
      // 监听 省份的变化 省份发生变化时,城市清空
        prov (newVal,oldVal) {
          console.log(newVal,'ll;')
          console.log(oldVal,'jjk')
          if (oldVal !== newVal) {
            this.city = ''
            console.log(this.city,'2321')
          }
        },
    },
    methods: {
      // 省 change 事件
      changeprov(val) {
        // 获取对应的省份
        this.cityALL.filter(item =>{
          if (val == item.vince) {
            return item.vince == val
          } 
        })
        // 获取省份
        this.provArr = this.cityALL
        // 获取城市
        for (var i in this.cityALL) {
          var obj = this.cityALL[i]
          if (obj.vince) {
            if (obj.vince == this.prov) {
              this.cityArr = obj.children
            }
          }
        }
      },
      // 城市 change 事件
      changecity() {
        console.log('o213p',this.city)
      }
    },
  };
</script>

以上代码如有问题,还请告知。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3与Element-UI的结合是一个非常常见的前端开发实践,Element-UI是一个基于Vue.js的开源UI组件库,提供了丰富的预定义UI组件和一套高效的开发工具。以下是使用Element-UIVue3中的一般步骤: 1. **安装依赖**: - 首先,你需要确保已经安装了Vue3,可以通过`npm install vue@next`或`yarn add vue@next`来安装。然后,安装Element-UI,运行`npm install element-plus`或`yarn add element-plus`。 2. **引入并配置**: 在`main.js`或`vite.config.ts`(如果是使用Vite)中引入Element-Plus并配置: ```javascript import { createApp } from 'vue'; import { ElButton, ElContainer } from 'element-plus'; import App from './App.vue'; createApp(App) .use(ElementPlus) .mount('#app'); ``` 或者,如果你更喜欢使用Vue CLI,可以在`.vue`文件里直接使用`<script setup>`标签导入Element-UI组件: ```html <template> <div id="app"> <el-button>Button</el-button> <el-container></el-container> </div> </template> <script setup> import { ElButton, ElContainer } from 'element-plus'; const app = defineApp('App', () => ({ setup() { return () => ( <> <ElButton>Button</ElButton> <ElContainer></ElContainer> </> ); } })); </script> ``` 3. **使用组件**: Element-UI提供了大量的预定义组件,如按钮(`<el-button>`)、容器(`<el-container>`),你可以根据需要将它们添加到你的Vue组件中,按照Element-UI的API文档来使用它们。 4. **CSS主题**: 如果需要更改样式,可以引入Element-UI的主题文件,或者自定义主题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值