如何拿到选项的label
在我们的日常开发中,下拉框获取值是一个很常见的业务方法。
基本上都是拿到代码里的value
,如果有一天,我需要label
的值该如何拿到呢?
这里提供几个方法:
方法1
通过find函数去过滤对应的label
,具体方法如下:
1 2 3 4 5 6 7 8 9 10 11 12
| <script setup> import { ref } from 'vue' const value = ref('') let obj = ref({}) const getLabel = (value) => { console.log(value) obj = options.find((item) => { return item.value === value }) console.log(obj.label) } </script>
|
这里通过find 找到了对应的值。
方法2
我们可以直接通过绑定值拿label
,具体方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <template> <el-select v-model="value" placeholder="Select" size="large" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="`${item.label}||${item.value}`" /> </el-select> 当前的选项值为: {{ value }} </template>
|
这样我们可以同时拿到选中的label
和value
,后期通过 value.split("||")
进行分割拿到。
方法3
通过绑定原生click事件来进行传参
1 2 3 4 5 6 7 8
| <el-select v-model="value" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" @click.native="labelClick(item.label)"> </el-option> </el-select>
labelClick(data){ console.log(data); }
|
方法4
通过 $refs
拿到 el-select
组件实例,该实例拥有 selectedLabel
属性,为当前选中的 label
。
或者可以通过 selected
拿到选中的 option
的组件实例,拥有 label
和 value
两个属性。
1 2 3 4 5 6 7 8 9 10 11
| <el-select ref="selectLabel" v-model="value" placeholder="请选择" @change="getLabel"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
getLabel(){ this.$nextTick(()=>{ console.log(this.$refs.selectLabel.selectedLabel); console.log(this.$refs.selectLabel.selected.label); }) }
|
当然,这里我并没有测试性能问题,这里只是给出了对应的解决办法,enmmm,其实还有一种更加简便的方法,那就是全都绑定label值就行了🤪
部分来自于互联网,侵删。