el-select如何同时获取value和label?

在使用ElementUI组件库的el-select组件时,默认只能获取到下拉框的value值,而根据业务的不同需求,我们大多数都需要获取下拉框里面的label值,一并发送给后端。在这里提供两种获取label的方式:

方法一(懒方法,很实用):

在给el-option绑定:value值时使用对象的方式,将value和label同时绑定到:value上面。

 :value="{ value: item.key, label: item.value }"
  <template>
	<el-form ref="formValue" :model="formValue" >
		<el-form-item label="开户银行:" prop="bankCode">
		  <el-select
		    v-model="formValue.bankCodeName"
		    placeholder="请选择"
		    @change="selectBank"
		    filterable
		    clearable
		  >
		    <el-option  // 循环的是一个数组,item为对象
		      v-for="item in bankList"
		      :key="item.key"
		      :label="item.value"
		      :value="{ value: item.key, label: item.value }"  // 划重点
		    />
		  </el-select>
		</el-form-item>
	</el-form>
  </template>
  
  export default {
	data() {
	  return {
	    formValue: {
	      bankCode: '',
	      bankCodeName: '',
	    },
	    bankList:[
	      {"key": "01000000", "value": "中国邮政储蓄银行" },
	      {"key": "01020000", "value": "中国工商银行" },
	    ]
	  };
	},
	methods: {
	  // 选择开户银行
	  selectBank(data) {  // data为el-option上:value绑定的对象
	    // 将data对象解构
	    const { value, label } = data;
	    // 对formValue中的银行code和银行名称重新赋值
	    this.formValue.bankCode = value;     // 01020000
	    this.formValue.bankCodeName = label; // 中国工商银行
	  },
	}
  }

方法二:
获取bankCode值之后,对下拉列表数组进行循环判断,当选择的bankCode值与列表中对象的key相同时,获取当前对象的value值。

  <template>
	<el-form ref="formValue" :model="formValue" >
		<el-form-item label="开户银行:" prop="bankCode">
		  <el-select
		    v-model="formValue.bankCodeName"
		    placeholder="请选择"
		    @change="selectBank"
		    filterable
		    clearable
		  >
		    <el-option  // 循环的是一个数组,item为对象
		      v-for="item in bankList"
		      :key="item.key"
		      :label="item.value"
		      :value="item.key"   // 划重点
		    />
		  </el-select>
		</el-form-item>
	</el-form>
  </template>

  export default {
	data() {
	  return {
	    formValue: {
	      bankCode: '',
	      bankCodeName: '',
	    },
	    bankList:[
	      {"key": "01000000", "value": "中国邮政储蓄银行" },
	      {"key": "01020000", "value": "中国工商银行" },
	    ]
	  };
	},
	methods: {
	  // 选择开户银行
	  selectBank(value) {
	    // 1、使用循环方式获取bankCodeName
	    this.bankList.forEach(item=>{
	      if(item.key === value){
	      	this.formValue.bankCodeName = item.value;	// 中国工商银行
	      }
	    })
	    // 2、使用数组的find方法获取bankCodeName
	    // 数组实例的find方法用于找出第一个符合条件的数组成员
	    const bankObj =  this.bankList.find(item => item.key === value);
	    this.formValue.bankCodeName = bankObj.value;	// 中国工商银行
	  }
	}
  }
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据value值选中el-selectlabel,可以通过v-model绑定el-selectvalue属性,并使用computed属性或watch来实现。 下面是一个示例代码: ```html <template> <el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option> </el-select> </template> <script> export default { data() { return { selectedValue: '', options: [ { value: 'option1', label: '选项1' }, { value: 'option2', label: '选项2' }, { value: 'option3', label: '选项3' } ] } }, computed: { selectedLabel() { const selectedOption = this.options.find(option => option.value === this.selectedValue) return selectedOption ? selectedOption.label : '' } }, watch: { selectedValue(newValue) { const selectedOption = this.options.find(option => option.value === newValue) if (selectedOption) { this.selectedLabel = selectedOption.label } else { this.selectedLabel = '' } } } } </script> ``` 在上述代码中,我们使用v-model绑定了selectedValue变量来存储用户选择的值。 使用computed属性selectedLabel获取根据selectedValue选中的label。通过在options数组中查找与selectedValue相匹配的选项,并返回其label属性。 通过watch监听selectedValue的变化,如果selectedValue的值改变,则根据新的值找到对应的选项,并将其label赋值给selectedLabel。 这样,无论是通过用户选择还是通过代码改变selectedValue的值,都能保证el-select正确显示对应的label

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值