vue3中的select联动

这篇博客探讨了在 Vue2 和 Vue3 中如何使用 v-if 和 v-show 实现 select 组件的联动效果。在 Vue2 中,v-if 可以正常工作,但在 Vue3 中,由于 v-if 的提前求值会导致未创建的对象引用错误。因此,作者建议将 v-if 改为 v-show 来避免这种问题,确保在城市选项渲染时,对应的 city 对象已经存在。
摘要由CSDN通过智能技术生成

在vue2中通过v-if实现select联动

<div id="app">

        省份:<select v-model="province_id">

            <option :value="provice.id" v-for="provice in province_list">{{provice.name}}</option>

        </select>

        城市:<select v-model="city_id">

            <option :value="city.id" v-for="city in city_list" v-if="city.pid==province_id">{{city.name}}</option>

    </div>

但是在vue3中,v-if会先执行,此时city对象还没有创建,所以会报错。v-if改成v-show即可实现同样效果。

<div id="app">

        省份:<select v-model="province_id">

            <option :value="provice.id" v-for="provice in province_list">{{provice.name}}</option>

        </select>

        城市:<select v-model="city_id">

            <option :value="city.id" v-for="city in city_list" v-show="city.pid==province_id">{{city.name}}</option>

    </div>

Vue3 Select 联动可以通过监听 Select 组件的 change 事件实现。具体实现步骤如下: 1. 在 data 定义需要联动的数据列表,如下: ``` data() { return { provinces: [ { value: 'jilin', label: '吉林省' }, { value: 'liaoning', label: '辽宁省' }, { value: 'hebei', label: '河北省' } ], cities: { 'jilin': [ { value: 'changchun', label: '长春市' }, { value: 'jilin', label: '吉林市' }, { value: 'siping', label: '四平市' } ], 'liaoning': [ { value: 'shenyang', label: '沈阳市' }, { value: 'dalian', label: '大连市' }, { value: 'anshan', label: '鞍山市' } ], 'hebei': [ { value: 'shijiazhuang', label: '石家庄市' }, { value: 'tangshan', label: '唐山市' }, { value: 'baoding', label: '保定市' } ] }, selectedProvince: '', selectedCity: '' } } ``` 2. 在模板使用 Select 组件,如下: ``` <template> <div> <select v-model="selectedProvince" @change="onProvinceChange"> <option value="">请选择省份</option> <option v-for="province in provinces" :value="province.value">{{ province.label }}</option> </select> <select v-model="selectedCity"> <option value="">请选择城市</option> <option v-for="city in cities[selectedProvince]" :value="city.value">{{ city.label }}</option> </select> </div> </template> ``` 3. 在 methods 定义 onProvinceChange 方法,该方法会在省份选择发生变化时被调用,根据选的省份,更新城市列表数据,如下: ``` methods: { onProvinceChange() { this.selectedCity = '' // 清空城市选择 } } ``` 这样,就可以实现 Vue3 Select联动效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值