Vue.js如何从JSON数据填充汽车品牌与车型两个联动下拉框
联动下拉选择框修复代码
关键修改说明
- 品牌下拉框改用
v-model直接绑定选中索引,不需要额外写change事件手动赋值,减少冗余代码 - 车型下拉框直接遍历当前选中品牌的
models数组,不再遍历全量品牌列表,从根源避免出现多余null/undefined选项 - 车型选项直接读取遍历对象的
name属性展示,修正车型名称不显示的问题 - 新增
selectedModel变量绑定车型下拉选中值,品牌切换时自动更新为当前车型列表第一项,实现默认选中效果
完整代码
<template> <div> Make:<select v-model.number="selectedIndex"> <option v-for="(item, index) in logitems" :key="index" :value="index" > {{ item.name }} </option> </select> Model:<select v-model="selectedModel"> <option v-for="(model, index1) in logitems[selectedIndex].models" :key="index1" :value="model.name" > {{ model.name }} </option> </select> </div> </template> <script> import logs from "../assets/car-makes.json"; export default { data() { return { logitems: logs, selectedIndex: 0, selectedModel: '' }; }, watch: { // 品牌切换时自动选中第一个车型 selectedIndex: { immediate: true, handler(val) { this.selectedModel = this.logitems[val].models[0].name } } } }; </script>
内容的提问来源于stack exchange,提问作者Naim R.
相关产品推荐
相关产品推荐

