当前位置: 首页 > news >正文

value-key 的作用


在 el-autocomplete 组件中,value-key 是一个非常重要的属性,它用于指定选项对象中作为值的字段名。当选项列表是一个包含多个属性的对象数组时,value-key 能帮助组件明确哪个属性是实际要使用的值。比如,选项列表为 [{id: '01', name: 'ab'}, {id: '02', name: 'cd'}],若设置 value-key="id",就表明组件会以 id 字段的值来进行匹配和绑定。

实现初始值匹配显示


若 v-model 绑定的值是 id,要让 el-autocomplete 里的值自动初始加载为对应的 name,可以通过以下步骤实现:


Vue 3 + ElementPlus

<template>
  <div>
    <el-autocomplete
      v-model="selectedId"
      :fetch-suggestions="querySearch"
      placeholder="请输入内容"
      @select="handleSelect"
      :value-key="valueKey"
      :item-text="item => item.name"
    ></el-autocomplete>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { ElAutocomplete } from 'element-plus';

// 选项列表
const options = [
  { id: '01', name: 'ab' },
  { id: '02', name: 'cd' }
];

// 绑定的初始值
const selectedId = ref('01');
// 指定作为值的字段名
const valueKey = ref('id');

const querySearch = (queryString, cb) => {
  const results = queryString
    ? options.filter(item => item.name.toLowerCase().includes(queryString.toLowerCase()))
    : options;
  cb(results);
};

const handleSelect = (item) => {
  console.log('选中的值:', item);
};
</script>

<style scoped>
/* 样式可以根据需要添加 */
</style>

代码解释

  • value-key 属性:设置为 id,这样组件就知道使用 id 字段的值进行匹配和绑定。
  • item-text 属性:通过 :item-text="item => item.name" 指定在输入框中显示的文本为选项对象的 name 属性值。
  • v-model 绑定:v-model 绑定的是 selectedId,初始值为 '01'。组件会根据 value-key 找到对应的选项,并通过 item-text 显示该选项的 name 属性值。

Vue 2 + Element UI 示例

<template>
  <div>
    <el-autocomplete
      v-model="selectedId"
      :fetch-suggestions="querySearch"
      placeholder="请输入内容"
      @select="handleSelect"
      :value-key="valueKey"
      :item-text="item => item.name"
    ></el-autocomplete>
  </div>
</template>

<script>
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

export default {
  data() {
    return {
      selectedId: '01',
      valueKey: 'id',
      options: [
        { id: '01', name: 'ab' },
        { id: '02', name: 'cd' }
      ]
    };
  },
  methods: {
    querySearch(queryString, cb) {
      const results = queryString
        ? this.options.filter(item => item.name.toLowerCase().includes(queryString.toLowerCase()))
        : this.options;
      cb(results);
    },
    handleSelect(item) {
      console.log('选中的值:', item);
    }
  }
};
</script>

<style scoped>
/* 样式可以根据需要添加 */
</style>

总结


通过设置 value-key 和 item-text 属性,能让 el-autocomplete 组件在 v-model 绑定 id 的情况下,自动显示对应的 name 值。在不同的 Vue 版本中,基本思路是一致的,只是语法有所不同。

相关文章:

  • C语言为什么不考虑对齐规则?
  • Go常见问题与回答(上)
  • 100天精通Python(爬虫篇)——第122天:基于selenium接管已启动的浏览器(反反爬策略)
  • 机器学习——神经网络、感知机
  • 【AIGC】WIN10极速部署OpenManus(含WEB界面)
  • Linux实操篇-权限管理
  • 【机器学习】什么是支持向量机?
  • [操作系统] 进程间通信:进程池的实现
  • 解读InnoDB数据库索引页与数据行的紧密关联
  • 如何在 React 项目中进行服务器端渲染(SSR),它有什么优势
  • [学成在线]06-视频分片上传
  • BMS电池管理系统上下电过程
  • AVLTree
  • 单片机串口打印调试信息①
  • AI卫浴官:机器学习如何预判您的生理时钟
  • uniapp uni-drawer组件vue3写法
  • 【C++经典例题】寻找字符串中第一个不重复字符的索引
  • C++STL(四):stack和queue的模拟实现
  • [python] 使用Python实现Markdown文档格式转换
  • Flutter 输入组件 Radio 详解
  • 图讯丨习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 泽连斯基表示将在土耳其“等候”普京
  • 全国重点网络媒体和网络达人走进沧州,探寻“文武双全”的多重魅力
  • 马鞍山市原常务副市长黄化锋一审获刑11年,涉案金额三千余万元
  • 鄂州:锁死中小学教师编制总量,核减小学编制五百名增至初中