0
点赞
收藏
分享

微信扫一扫

vue2+antd 使用select 通过v-model 无法回显也不能修改?

兮城 2023-11-08 阅读 64

<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 组件的值了。

举报

相关推荐

0 条评论