记录一个下拉菜单同时传输label 和 value的方案

在这里插入图片描述
注意:有时候不是必须两个都在前端展示,有时候是作为数据冗余,方便查询。

可视部分

<div>
   <n-form-item label="企业名称" path="companyName">
     <n-form-item label="企业名称" path="companyCode">
       <n-select
           v-model:value="model.companyCode"
           filterable
           placeholder="请输入营业执照上的单位名称"
           :options="options"
           :loading="loading"
           clearable
           remote
           @search="getCompanyList"
       />
     </n-form-item>
   </n-form-item>
 </div>
 <div>
   <n-form-item label="统一信用代码" path="companyCode">
     <n-input
         v-model:value="model.companyCode"
         type="text"
         placeholder="请输入统一信用代码"
         class="input-item"
     >
     </n-input>
   </n-form-item>
 </div>

注意两个接收值都是 companyCode

获取选项 与 反翻译选项

const options = ref<any>([])
  const loading = ref(false)
  function getCompanyList(value) {
    if (!value.length) {
      options.value = []
      return
    }
    loading.value = true
    getEnterpriseOptionApi(value).then((res) => {
      options.value = res.rows
      loading.value = false
    }).catch((err) => {
      loading.value = false
    })
  }

  // 翻译公司编码对应的公司名称
  function getCompanyName(code: string) {
    const option = options.value.find(item => item.value === code)
    return option?.label || null
  }

记得把label赋给表单项,同时记得在前端或后端判空‘

model.value.companyName = getCompanyName(model.value.companyCode)

  const formRef = ref(null)
  function submitForm() {
    model.value.companyName = getCompanyName(model.value.companyCode)
    formRef.value?.validate((errors) => {
      if (!errors) {
        addNewBindCompanyApi(model.value).then((res)=>{
          router.replace('/profile/relationCompany')
          notification.success({
            content: '提交成功',
            meta: '您成功提交关联企业',
            duration: 2000
          })
        }).catch((err)=>{
          notification.error({
            content: '提交失败',
            meta: err?.msg,
            duration: 2000
          })

        })
      }
    })
  }

痛点:

  • 不管是ElementUI、NaiveUI,每次都要写这“反翻译选项”一段代码
  • 记得对Label判空,不管是前端还是后端,一定要确保!!!其实忘记了,也有一定的补救方案,因为value不为空。
  • 这种方案还是比较简单的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值