前言

提示:在开发业务场景中我们通常遇到一些奇怪的需求:
例如:el-select业务场景需要同时获取我们选中的label跟 value。

一、方案如下:
1.给el-select加上ref ='myselected'

代码如下(示例):

<el-select v-model="value" placeholder="请选择">
    <el-option
      ref = ‘mySelected’
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>

获取的话用:this.$refs.myselect.selected.label,选中值就是 this.$refs.myselect.selected.value

2.在value获取

代码如下(html示例):

<el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="`${item.value},${item.label}`"
      @change="handleChange">
    </el-option>

代码如下(js示例):

这种方法属于取巧方案其中value, label就是我们所需的值了,一般放在表单提交时获取转换获取值 

options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
 
handleChange(val){
       let [value, label] = val.split(",");
     },

3.在change添加监听循环获取

代码如下(html示例):

<el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value"
       @change="handleChange">
    </el-option>

代码如下(js示例):

options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
 
handleChange(val){
       let checkLabel = this.options.find( item => item.value ==val).label
     },

这种方法比较笨拙但也是最直接的方案。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐