vue3 下拉框三级联动

应用 vuetifyjs UI框架

<template>
    <v-app>
        <CommonAppHeader />
        <v-container>
            <v-row>
                <v-col>
                <v-select
                    v-model="selectedFirstLevel"
                    :items="firstLevelOptions"
                    label="一级选项"
                    @change="onFirstLevelChange"
                ></v-select>
                </v-col>
                <v-col>
                <v-select
                    v-model="selectedSecondLevel"
                    :items="selectedFirstLevel ? firstLevelOptiont : []"
                    label="二级选项"
                    @change="onSecondLevelChange"
                ></v-select>
                </v-col>
                <v-col>
                <v-select
                    v-model="selectedThirdLevel"
                    :items="selectedSecondLevel ? firstLevelOptionf : []"
                    label="三级选项"
                ></v-select>
                </v-col>
            </v-row>
        </v-container>
        <CommonAppFooter />
    </v-app>
</template>
<script>
    export default {
        data() {
            return {
                firstLevelOptions: ["一级分类", "111", "222", "333"],
                firstLevelOptiont: ["二级分类", "aaa", "bbb", "ccc"],
                firstLevelOptionf: ["三级分类", "!!!", "###", "@@@"],
                selectedFirstLevel: null,
                selectedSecondLevel: null,
                selectedThirdLevel: null,
            }
        },
        methods: {
            onFirstLevelChange() {
                this.selectedSecondLevel = null;
                this.selectedThirdLevel = null;
            },
            onSecondLevelChange() {
                this.selectedThirdLevel = null;
            }
        }
    }
</script>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Vue 3的计算属性(computed)来实现三级联动下拉框。以下是一个基本的示例: HTML: ``` <template> <div> <select v-model="selectedProvince"> <option v-for="province in provinces" :key="province">{{ province }}</option> </select> <select v-model="selectedCity"> <option v-for="city in cities" :key="city">{{ city }}</option> </select> <select v-model="selectedDistrict"> <option v-for="district in districts" :key="district">{{ district }}</option> </select> </div> </template> ``` JavaScript: ``` <script> import { reactive, computed } from 'vue' export default { setup() { const state = reactive({ provinces: ['北京', '上海', '广东'], cities: { '北京': ['东城', '西城', '朝阳'], '上海': ['黄浦', '徐汇', '长宁'], '广东': ['广州', '深圳', '珠海'] }, districts: { '东城': ['东城1', '东城2', '东城3'], '西城': ['西城1', '西城2', '西城3'], '朝阳': ['朝阳1', '朝阳2', '朝阳3'], '黄浦': ['黄浦1', '黄浦2', '黄浦3'], '徐汇': ['徐汇1', '徐汇2', '徐汇3'], '长宁': ['长宁1', '长宁2', '长宁3'], '广州': ['广州1', '广州2', '广州3'], '深圳': ['深圳1', '深圳2', '深圳3'], '珠海': ['珠海1', '珠海2', '珠海3'] }, selectedProvince: '', selectedCity: '', selectedDistrict: '' }) const filteredCities = computed(() => { if (!state.selectedProvince) { return [] } else { return state.cities[state.selectedProvince] } }) const filteredDistricts = computed(() => { if (!state.selectedCity) { return [] } else { return state.districts[state.selectedCity] } }) return { ...state, filteredCities, filteredDistricts } } } </script> ``` 在这个示例中,我们使用 `reactive` 创建了一个响应式对象来存储省市区数据和当前选中的省市区。然后,我们使用 `computed` 创建两个计算属性 `filteredCities` 和 `filteredDistricts`,分别用于根据当前选中的省和市来过滤对应的城市和区域。最后,我们将响应式对象和计算属性返回给模板,以供渲染和绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值