Ant Design Vue select 中label-in-value的使用,以及动态设置select默认值,默认值为空时placeholder不显示的问题


ant design vue:Select 选择器官方文档

代码使用示例:

<a-select>
  <a-select-option value="lucy">lucy</a-select-option>
</a-select>

labelInValue属性介绍:

使用 labelInValue 属性会把每个选项的 label 包装到 value 中,会把 Select 的 value 类型从 string 变为 {key: string, label: vNodes} 的格式
举例:

 <a-select
     placeholder="切换"
     label-in-value
     class="select"
     @change="handleChange">
         <a-select-option
            v-for="(item, index) in optionValue"
            :key="index"
            :value="item.key">
          {{ item.label }}
        </a-select-option>
</a-select>

    handleChange(input) {
      console.log(input)   //  {key: "xxxx",label:"xxxxx"}
    },

使用场景描述
下拉选项,平常只需传value值,但是现在需要label和value值,这个问题给组件加一个:labelInValue='true’属性就可以了,这个属性将string转换成了object,object中包含两个属性key和label,label就是展示文本值,key就是value值

动态设置下拉框的默认显示值问题

一般情况下,我们给select下拉框设置默认值只需要在select标签中加上 v-model属性即可绑定默认选项值,但是,当我们的选择器使用了 label-in-value属性后,使用v-model绑定默认值不生效

解决办法
使用defaultValue属性,值需写成{key:xxx}的形式。代码示例:

<a-select
     placeholder="切换"
     label-in-value
     :defaultValue="{ key: defaultSelect }"
     class="select"
     @change="handleChange">
         <a-select-option
            v-for="(item, index) in optionValue"
            :key="index"
            :value="item.key">
          {{ item.label }}
        </a-select-option>
</a-select>
export default {
	data(){
		return {
			defaultSelect:'xxx'
		}
	}
}
method:{
	 handleChange(input) {
      this.defaultSelect = input.key
    },
}

当select的默认值为空的时候,我们想让他显示placeholder的值,我们只需要设置 defaultSelect:undefined即可

export default {
	data(){
		return {
			defaultSelect:undefined
		}
	}
}

问题又来了,当我们使用labelInValue属性时,简单设置defaultSelect为undefined控制台会报错,而且placeholder的值也不会显示

解决办法:使用三元运算符加一个判断即可

<a-select
     placeholder="切换"
     label-in-value
    :defaultValue="defaultSelect ? { key: defaultSelect } : undefined"
     class="select"
     @change="handleChange">
         <a-select-option
            v-for="(item, index) in optionValue"
            :key="index"
            :value="item.key">
          {{ item.label }}
        </a-select-option>
</a-select>

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值