vue之elementUi的el-select同时获取value和label的三种方式

 更新时间:2023年02月23日 14:42:14   作者:知我者码农  
这篇文章主要介绍了vue之elementUi的el-select同时获取value和label的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一. 需求

如下图的下拉选项框,点击查看需要同时获取到选中选项的label值以及value值

以下是vue的渲染,在此不做过多介绍

<template>
  <div class="root">
    <el-select
      ref="optionRef"
      v-model="value"
      placeholder="请选择"
      style="width: 250px"
    >
      <el-option
        v-for="item in options"
        :key="item.id"
        :label="item.label"
        :value="item.value"
      >
      </el-option>
    </el-select>
    <el-button style="margin-left: 20px" @click="showoptions" type="primary" >查看</el-button >
  </div>
</template>

el-select绑定一个value值,el-option需要一个数组,以下是模拟数据

data() {
    return {
      value: "",
      options: [
        { id: 0, label: "苹果", value: "apple" },
        { id: 1, label: "香蕉", value: "banana" },
        { id: 2, label: "橙子", value: "orange" },
      ],
    };
  },

二. 方法

1. 通过ref的形式(推荐)

在进行el-select渲染时,给el-select添加一个ref,用于获取值

然后就可以在点击事件或者提交表单时获取到选中的值了

methods: {
    showoptions() {
      console.log(
        this.$refs.optionRef.selected.value,
        this.$refs.optionRef.selected.label
      );
    },
  },

想要回显的话直接给定el-select绑定的value为某个值即可,如想要回显苹果,就赋值为apple

该方法完整代码如下:

<template>
  <div class="root">
    <el-select
      ref="optionRef"
      v-model="value"
      placeholder="请选择"
      style="width: 250px"
    >
      <el-option
        v-for="item in options"
        :key="item.id"
        :label="item.label"
        :value="item.value"
      >
      </el-option>
    </el-select>
    <el-button style="margin-left: 20px" @click="showoptions" type="primary" >查看</el-button >
  </div>
</template>
<script>
export default {
  data() {
    return {
      value: "",
      options: [
        { id: 0, label: "苹果", value: "apple" },
        { id: 1, label: "香蕉", value: "banana" },
        { id: 2, label: "橙子", value: "orange" },
      ],
    };
  },
  methods: {
    showoptions() {
      console.log(
        this.$refs.optionRef.selected.value,
        this.$refs.optionRef.selected.label
      );
    },
  },
};
</script>

2. 通过字符串拼接的形式(推荐)

这个方法相对于第一种方法而已,优点在于不止于同时获取label和value,可以获取多个,如再加一个id值什么的,这里演示还是以获取label和value为例,如想要获取其他,按照如下方式即可

我们在el-option渲染时,所设置的value属性值可以设置成label+value的形式,如下图

那么我们获取值时,直接获取el-select绑定的value即可,

获取后的值形式如下图,那么+号前面的就是想要的value值,后面的就是label值了,对返回的数据用split('+')进行切割,返回的数组索引0就是value值,数组索引1就是label值 

这种方法在回显的时候稍微有点麻烦,因为要把回显的值也弄成value+label的形式渲染到el-select所绑定的value上,比如要回显香蕉,就将value设置为’banana+香蕉‘

以下是第二种方法的完整代码

<template>
  <div class="root">
    <el-select
      ref="optionRef"
      v-model="value"
      placeholder="请选择"
      style="width: 250px"
    >
      <el-option
        v-for="item in options"
        :key="item.id"
        :label="item.label"
        :value="item.value + '+' + item.label"
      >
      </el-option>
    </el-select>
    <el-button style="margin-left: 20px" @click="showoptions" type="primary"
      >查看</el-button
    >
  </div>
</template>
<script>
export default {
  data() {
    return {
      value: "banana+香蕉",
      options: [
        { id: 0, label: "苹果", value: "apple" },
        { id: 1, label: "香蕉", value: "banana" },
        { id: 2, label: "橙子", value: "orange" },
      ],
    };
  },
  methods: {
    showoptions() {
      console.log(this.value);
      console.log("value=====", this.value.split("+")[0]);
      console.log("label=====", this.value.split("+")[1]);
    },
  },
};
</script>

3. 通过遍历的形式(不推荐)

这种方法就不太友好,就是通过el-select绑定的value对el-option数组进行遍历查找

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于vue-color-颜色选择器插件

    关于vue-color-颜色选择器插件

    这篇文章主要介绍了关于vue-color-颜色选择器插件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 在vue中封装的弹窗组件使用队列模式实现方法

    在vue中封装的弹窗组件使用队列模式实现方法

    这篇文章主要介绍了在vue中封装的弹窗组件使用队列模式实现方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 详解vue使用$http服务端收不到参数

    详解vue使用$http服务端收不到参数

    这篇文章主要介绍了vue使用$http服务端收不到参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)

    Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)

    在Vue的框架开发的项目过程中,经常会用到组件来管理不同的功能,有一些公共的组件会被提取出来。下面通过本文给大家介绍Vue开发中常用的三种传值方式父传子、子传父、非父子组件传值,需要的朋友参考下吧
    2018-08-08
  • vue1.0和vue2.0的watch监听事件写法详解

    vue1.0和vue2.0的watch监听事件写法详解

    今天小编就为大家分享一篇vue1.0和vue2.0的watch监听事件写法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 解决VueCil代理本地proxytable无效报错404的问题

    解决VueCil代理本地proxytable无效报错404的问题

    这篇文章主要介绍了解决VueCil代理本地proxytable无效报错404的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • AntV+Vue实现导出图片功能

    AntV+Vue实现导出图片功能

    AntV 组织图操作完毕以后,需要点击按钮将画布以图片的形式导出,这篇文章主要介绍了AntV结合Vue实现导出图片功能,需要的朋友可以参考下
    2023-01-01
  • Vue使用moment将GMT时间转换为北京时间

    Vue使用moment将GMT时间转换为北京时间

    GMT(Greenwich Mean Time)和UTC(Coordinated Universal Time)是两个时间标准,它们在许多方面非常相似,但也有一些微小的差异,本文给大家详细介绍了Vue使用moment将GMT时间转换为北京时间,需要的朋友可以参考下
    2023-12-12
  • vue.js与element-ui实现菜单树形结构的解决方法

    vue.js与element-ui实现菜单树形结构的解决方法

    本文通过实例给大家介绍了vue.js与element-ui实现菜单树形结构,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • Vue3如何理解ref toRef和toRefs的区别

    Vue3如何理解ref toRef和toRefs的区别

    本文主要介绍了Vue3如何理解ref toRef和toRefs的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论