<template>
<a-table size="middle" :data-source="dataList" :pagination="false" :locale="{ emptyText: '暂无数据' }" :scroll="{ x: 'max-content' }">
<a-table-column title="汇率" align="center">
<template #default="{record}">
<a-select v-model="selectedValue" style="width:150px" @change="handleChange">
<a-select-option v-for="option in options" :key="option.value" :value="option.value">
{{ option.label }}
</a-select-option>
</a-select>
<button @click="()=>{ this.selectedValue = '3' }">33</button>
</template>
</a-table-column>
</a-table>
</template>
<script>
export default {
name: "executionInfo",
data() {
return {
dataList: [
{
index: "1",
name: "John Brown",
age: 32,
address: "New York No. 1 Lake Park"
}
],
options: [
{ value: "1", label: "选项1" },
{ value: "2", label: "选项2" },
{ value: "3", label: "选项3" }
],
selectedValue: '3',
};
},
methods: {
handleChange(value) {
this.selectedValue = value;
}
},
mounted() {
// this.handleChange(this.selectedValue);
this.selectedValue = '3'
}
};
</script>
<style lang="less" scoped></style>
从提供的代码看,你使用了 Ant Design Vue 的 Select 组件,并使用 v-model 来绑定选中的值,但是无法回显也不能修改。
问题可能出在你的代码中,你在循环渲染 Select 的选项时,使用了同一个 v-model 变量 selectedValue
,这导致所有选项都绑定到同一个值上,无法正确回显或修改。
解决这个问题的方法是,为每个选项使用不同的 v-model 变量。你可以在 data 中为每个选项定义一个变量,并在 Select 组件中绑定对应的变量。这样每个选项都有自己独立的状态,就能正确回显和修改了。
以下是修改后的代码示例:
...
<a-select v-model="record.selectedValue" style="width:150px" @change="handleChange">
<a-select-option v-for="option in options" :key="option.value" :value="option.value">
{{ option.label }}
</a-select-option>
</a-select>
...
export default {
name: "executionInfo",
data() {
return {
dataList: [
{
index: "1",
name: "John Brown",
age: 32,
address: "New York No. 1 Lake Park",
selectedValue: "3" // 为每个选项定义独立的变量
}
],
options: [
{ value: "1", label: "选项1" },
{ value: "2", label: "选项2" },
{ value: "3", label: "选项3" }
]
};
},
methods: {
handleChange(value, record) {
record.selectedValue = value; // 修改独立的变量
}
}
};
通过为每个选项定义独立的变量进行绑定,你就能够正确地回显和修改 Select 组件的值了。
标签:选项,变量,回显,value,label,vue2,antd,selectedValue From: https://blog.51cto.com/M82A1/8259100