Javascript 自定义v-select中的项目文本
请告诉我是否可以为Javascript 自定义v-select中的项目文本,javascript,vue.js,vuetify.js,Javascript,Vue.js,Vuetify.js,请告诉我是否可以为v-select自定义项目文本 我想在v-select中自定义每个项目,如下所示: :item-text="item.name - item.description" <v-select> // Don't forget your props <template slot="selection" slot-scope="data"> <!-- HTML that describe how select should render se
v-select
自定义项目文本
我想在v-select
中自定义每个项目,如下所示:
:item-text="item.name - item.description"
<v-select> // Don't forget your props
<template slot="selection" slot-scope="data">
<!-- HTML that describe how select should render selected items -->
{{ data.item.name }} - {{ data.item.description }}
</template>
<template slot="item" slot-scope="data">
<!-- HTML that describe how select should render items when the select is open -->
{{ data.item.name }} - {{ data.item.description }}
</template>
</v-select>
是的,您可以使用文档中描述的
范围插槽
,并提供模板
对于v-select
,您有两个作用域插槽
:
:描述选择时selection
应如何呈现项目v-select
:描述打开时item
应如何呈现项目v-select
:item-text="item.name - item.description"
<v-select> // Don't forget your props
<template slot="selection" slot-scope="data">
<!-- HTML that describe how select should render selected items -->
{{ data.item.name }} - {{ data.item.description }}
</template>
<template slot="item" slot-scope="data">
<!-- HTML that describe how select should render items when the select is open -->
{{ data.item.name }} - {{ data.item.description }}
</template>
</v-select>
//别忘了你的道具
{{data.item.name}-{{data.item.description}
{{data.item.name}-{{data.item.description}
编辑Vuetify 1.1.0+:这些插槽还可以使用新组件
v-autocomplete
和v-combobox
,因为它们继承自v-select
编辑Vue 2.6+,替换:
v-slot:selection=“data”
v-slot:item=“data”
item text
tye可以是:string|array|function
然后我们可以:
:item-text="text"
及
下面是一个简单代码示例:
<template>
<v-select
label='Names'
v-model='name'
:items='names'
item-value='id'
item-text='name'
return-object
>
<template slot='selection' slot-scope='{ item }'>
{{ item.name }} - {{ item.age }}
</template>
<template slot='item' slot-scope='{ item }'>
{{ item.name }} - {{ item.age }}
</template>
</v-select>
</template>
<script>
export default {
data: () => ({
names:[
{id: 1, name: 'Paul', age: 23},
{id: 2, name: 'Marcelo', age: 15},
{id: 3, name: 'Any', age: 30},
]
})
}
</script>
{{item.name}-{{item.age}
{{item.name}-{{item.age}
导出默认值{
数据:()=>({
姓名:[
{id:1,姓名:'Paul',年龄:23},
{id:2,姓名:'Marcelo',年龄:15},
{id:3,姓名:'Any',年龄:30},
]
})
}
以下为参考资料:
速记:
:item-text="item => item.name +' - '+ item.description"
以防您不想处理插槽或其他方法来操纵项目文本。这里有另一种不同的方法来实现相同的结果 只需使用计算方法将新的“displayname”key:value对动态添加到v-model集合中,并将其用作select的v-model,将新的key用作项文本
计算:{
addDisplayname(){
返回names.map(v=>({…v,
显示名称:v.name+'-'+v.description
}))
}
}
saved my day:)saved my day(2)必须同时具有slot
和slot scope
属性,用于模板
标记。这对我来说并不明显。从vue 2.6开始,应该是
您可以这样做:``复选框check\u box\u outline\u blank{{data.item.text}-{{data.item.description}``问题是:数组类型是什么意思?@P.Scheit,.join(',')
alias<代码>:item value也可用于设置所选值。谢谢,我们还可以将其写成:item text=“item=>`${item.name}-${item.description}`“
唯一对我有效的解决方案,由于我想将其用于“多重”选择-是否有可能根据自定义项目文本对Tiem进行排序?@Inigo实际上这是另一个问题,请检查v-selectfilter
props,它接受带有itemText
的函数,而接受的答案已经适用于我,我更喜欢这个,谢谢一个很好的例子。谢谢你。他的作品很棒