如何实现带动态选项列表的v-select并获取选中项ID?
刚在项目里搞定了Vuetify v-select获取选中项完整对象(含ID)的问题,这里跟大家唠唠关键要点,避免踩坑:
使用Vuetify v-select获取选中项ID的正确姿势
1. 组件核心代码(必加return-object)
这是v-select的实现代码,重点一定要加上return-object属性——这是能拿到选中项ID的关键:
<v-select v-model="selectedEmployee" :items="employee" item-text="name" value="id" return-object hide-details ></v-select>
划重点:如果没加return-object,选中后只能拿到下拉菜单显示的文本内容,根本获取不到对应的ID字段!
2. 提前声明需要的数据变量
在Vue组件的data选项里,定义三个数据项:
data: { employeeList: [], // 用来存放接口返回的原始员工数据数组 employee: [], // 整理后给v-select做选项的数组 selectedEmployee: null // 绑定选中结果的变量 }
3. 接口数据获取与格式整理
通过GET请求拿到JSON格式的员工列表后,先把原始数据存到employeeList,再循环整理成v-select需要的结构(把姓和名拼接成显示的name,同时保留原始ID):
// 假设app是你的Vue实例对象 for(let i = 0; i < app.employeeList.length; i++) { app.employee.push({name: '', id: ''}); app.employee[i].name = app.employeeList[i].lastname + ' ' + app.employeeList[i].firstname; app.employee[i].id = app.employeeList[i].id; }
4. 选中后的结果差异
- 加了
return-object:选中选项后,selectedEmployee会拿到完整的对象,比如:{name: 'Jane Doe', id: 0} - 没加
return-object:selectedEmployee只会是下拉显示的文本(比如'Jane Doe'),完全拿不到ID,后续提交后端这类操作就会卡住。
内容的提问来源于stack exchange,提问作者vueNoob
相关产品推荐
相关产品推荐

