el-select组件同时输出label和name的值,这优雅不?--vue3+ts

el-select组件同时输出label和name的值,实现的方法很多,有添加value-key=‘xxx’,有通过@change获取输出赋值(其实也差不多)。
试试的我方法:input隐藏域

附代码及结果:

<template>
  结果:{{ formInline }}
  <el-form :inline="true" :model="formInline" class="demo-form-inline">
    <el-form-item label="optionName">
      <el-select
        v-model="formInline.optionVal"
        placeholder="Select"
        size="small"
        style="width: 240px"
      >
        <el-option
          v-for="(item, index) in options"
          :key="index"
          :label="item.label"
          :value="item.value"
        />
      </el-select>
      <!-- 隐藏于赋值Name -->
      <input
        type="hidden"
        :value="
          (formInline.optionLab = options.find(
            (o:any) => o.value == formInline.optionVal
          )?.label || '')
        "
      />
    </el-form-item>
    <el-form-item label="dateRange">
      <el-date-picker
        v-model="formInline.dateRange"
        type="daterange"
        unlink-panels
        range-separator="To"
        start-placeholder="Start date"
        end-placeholder="End date"
        format="YYYY/MM/DD"
        value-format="YYYY-MM-DD"
      />
      <!-- 隐藏域分别赋值开始日期,结束日期 -->
      <input
        type="hidden"
        :value="
          ((formInline.startDate = formInline.dateRange[0] || ''),
          (formInline.endDate = formInline.dateRange[1] || ''))
        "
      />
    </el-form-item>
  </el-form>
</template>

<script lang="ts" setup>
import { reactive } from "vue";

const formInline = reactive({
  optionVal: "",
  optionLab: "",
  dateRange: "",
  startDate: "",
  endDate: "",
});

const options = [
  {
    value: "val1",
    label: "label1",
  },
  {
    value: "val2",
    label: "label2",
  },
  {
    value: "val3",
    label: "label3",
  },
];
</script>

若项目是vue3+ts+element-plus全局,可直接粘贴代码测试
在这里插入图片描述

这种写法,不知道有没有什么弊端?懂的大佬,求教求教!


写在最后,有想法可以一起交流交流,欢迎各位大佬洽谈交流
前端学习社区交流群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值