如何避免下拉框赋值出错,导致item成数组多出额外值?

摘要:下拉框的item变成一个对象并且多出额外的值 更改下拉框的数据源,在赋值的时候,本来应该点value时,但是没有点value。 会造成item的值变成一个数组,并且这个数组还会多出额外的值,本来应该是一个对象的。 复现上述场景的代码 &am
下拉框的item变成一个对象并且多出额外的值 更改下拉框的数据源,在赋值的时候,本来应该点value时,但是没有点value。 会造成item的值变成一个数组,并且这个数组还会多出额外的值,本来应该是一个对象的。 复现上述场景的代码 <template> <div class="about"> <el-select v-model="currentCityTypeValue" placeholder="Select" style="width: 240px" @change="setHandler" > <el-option v-for="item in cityTypeSelect" :key="item.value" :label="item.label" :value="item.value" /> </el-select> {{ currentCityTypeValue }} <el-select :key="currentCityTypeValue" v-model="selectCityValue" placeholder="Select" style="width: 340px"> <el-option v-for="item in cities" :key="item.value" :label="item.label" :value="item.value" > <div v-if="currentCityTypeValue==='B'">{{ item }}</div> </el-option> </el-select> </div> </template> <script lang="ts" setup> import { ref } from 'vue' const currentCityTypeValue = ref('A') const selectCityValue = ref('') const cityTypeSelect =ref([ {value:'A',label:'设置A城市数据源'}, {value:'B',label:'设置B城市数据源'} ]) const cityAList = ref([ { value: 'a1', label: 'A1城市', }, { value: 'a2', label: 'A2城市', } ]) const cityBList = ref([ { value: 'b1', userName: 'B1城市', //这里不在是label而是userName label: 'B1城市', }, { value: 'b2', userName: 'B2城市', // 这里不在是label而是userName } ]) const cities = ref([]) // 初始的时候设置A城市的数据源 cities.value = cityAList.value function setHandler(){ if(currentCityTypeValue.value==='A'){ cities.value = cityAList.value }else if(currentCityTypeValue.value==='B'){ /** * 这里本来应该是点value的。但是你没有点value。 * 会造成item的值变成一个数组,并且这个数组还会多出额外的值。 * 本来应该是一个对象的。 * */ cities.value = cityBList console.log('B',cities.value) } } </script> <style lang="scss" scoped> .about{ margin-top: 100px; margin-left: 100px; } </style>