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>