在使用elementUI开发过程中,其中el-select是使用频率比较高的组件之一,但是在有些场景中,需要同时获取到el-select选中的 label 和 value,label一般是name之类的用于展示、value一般是ID之类的用于数据处理。但是根据文档来看,el-select是不支持直接获取 的,那就需要自己想办法获取了,下面三种方法都可以:
一、通过组件实例直接获取(ref):

<template>
  <el-select v-model="value" placeholder="请选择" ref="myValue" @@change="ElSelectChange">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>

// Element中的使用方式
const { label, value } = this.$refs.myValue.selected;
或者
let label = this.$refs.myValue.selected.label;
let value= this.$refs.myValue.selected.value;

// ElementPlus中使用
const myValue = ref();
const { currentLabel: label, value } = myValue.value.selected;

二、通过"find"(返回符合传入测试(函数)条件的数组元素) 查找到选中的label:

<template>
  <el-select v-model="value" placeholder="请选择" ref="myValue" @@change="ElSelectChange">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>
<script>
ElSelectChange(val) {
  var data = this.options.find(item => item.value == val);
  if(data){
     var label=data.label;
   }
}  
</script>

三、通过拼接label和value 然后拆分获取:

<template>
  <el-select v-model="value" placeholder="请选择" ref="myValue" @@change="ElSelectChange">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
       :value="`${item.value},${item.label}`">
    </el-option>
  </el-select>
</template>
<script>
ElSelectChange(val) {
 const [value, label] = val.split(",");
}  
</script>

注:change改变事件的双"@@"这是MVC中的用法,Vue中用的是单个"@"。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐