方法1 :value="item" 绑定对象
只要:value
绑定item对象就可以
value-key="value"
必须是item里的一个属性,绑定值为对象类型时必填
html
<el-select v-model="value" placeholder="请选择" value-key="value" @change="changeSelect">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item"></el-option>
</el-select>
javascript
data() {
return {
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: ''
}
},
methods: {
changeSelect(val) {
console.log(val);// item对象
}
}
方法2 用find找到选中数据的item
有时候v-modal绑定的是表格的scope.row属性,以及可能会被其他因素影响。用:value="item"
可能会出问题,这种情况就比较适合用find
了,把选中值和数据列表做对比,找出选中的那个item
html
<template>
<el-select v-model="selectedValue" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
<script>
export default {
data() {
return {
selectedValue: null,
options: [
{ label: '选项1', value: 'option1', additionalData: '数据1' },
{ label: '选项2', value: 'option2', additionalData: '数据2' },
// ...更多选项
]
};
},
// 可以用watch监听,也可以用@change
watch: {
selectedValue(newValue) {
const selectedItem = this.options.find(item => item.value === newValue);
console.log(selectedItem); // 包含所有数据的选中项
}
}
};
</script>