美文网首页
2021-03-15 vue el-select绑定对象时,回显

2021-03-15 vue el-select绑定对象时,回显

作者: 追寻1989 | 来源:发表于2021-03-18 09:20 被阅读0次

    vue el-select绑定对象时,回显内容始终是最后一项

    一、问题描述

    使用el-select组件绑定类型为对象时,回显内容始终为选项的最后一项,但是通过控制台打印的信息却是所选项。

    使用代码:

    <template>
      <div class="page-index">
        <el-form
          :model="ruleForm"
          :rules="rules"
          ref="ruleForm"
          label-width="100px"
        >
          <el-form-item label="食物名称" prop="food">
            <el-select
              v-model="ruleForm.food"
              placeholder="请选择食物"
              @change="handleChange"
            >
              <el-option
                v-for="food in foodOptions"
                :key="food.id"
                :label="food.name"
                :value="food"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          ruleForm: {
            food: {}
          },
          foodOptions: [
            {
              id: "食物1",
              name: "黄金糕"
            },
            {
              id: "食物2",
              name: "双皮奶"
            },
            {
              id: "食物3",
              name: "蚵仔煎"
            },
            {
              id: "食物4",
              name: "龙须面"
            },
            {
              id: "食物5",
              name: "北京烤鸭"
            }
          ],
          rules: {
            food: [{ required: true, message: "请选择具体食物", trigger: "blur" }]
          }
        };
      },
      methods: {
        handleChange(food) {
          console.log(food.name);
        }
      }
    };
    </script>
    

    如图所示:


    实际选择了蚵仔煎,回显的内容却是北京烤鸭,但日志打印出的是蚵仔煎,是正确的。

    二、原因分析和解决方法

    官网上有说明,若绑定值为对象类型时,必须指定value-key,作为 value 唯一标识的键名。所以只需在el-select中增加value-key即可。
    https://element.eleme.cn/#/zh-CN/component/select#select-attributes

    修改后el-select使用代码:

    <el-select
        v-model="ruleForm.food"
        placeholder="请选择食物"
        value-key="id"
        @change="handleChange"
    >
        <el-option
        v-for="food in foodOptions"
        :key="food.id"
        :label="food.name"
        :value="food"
        ></el-option>
    </el-select>
    

    三、总结

    好好看官方文档!!!

    相关文章

      网友评论

          本文标题:2021-03-15 vue el-select绑定对象时,回显

          本文链接:https://www.haomeiwen.com/subject/zbakcltx.html