我正在使用vuetify并尝试遍历包含我想要应用为背景的不同十六进制的javascript对象。
最终结果如下所示:
我正在尝试将每个Hexcode绑定到每个不同项目颜色的背景。
下面是我尝试做的事情:
<!-- Color Cards -->
<v-container grid-list-md text-xs-center>
<v-layout row wrap>
<v-flex class="item" xs12 sm4 v-for="color in colors" :key="color.id">
<v-card ripple hover class="">
<div class="item-color"
v-for="(hex, index) in colors.hex"
:key="index"
:style="{ 'background-color': hex[index]}">
</div>
<v-card-text class="px-0">{{ color.title }}</v-card-text>
</v-card>
</v-flex>
</v-layout>
</v-container>
这是数据对象:
export default {
data () {
return {
colors: [
{
id: 'ssmf',
hex: ['#297afb','#2898fb','#01d8fd'],
title: 'Sleek, Sophisticated, Mature & Formal'
},
{
id: 'hlfss',
hex: ['#297afb','#2898fb','#01d8fd'],
title: 'Honest, Loyal, Friendly, Stable, & Strong'
}
]
}
}
}
答案 0 :(得分:2)
有两个错误:
<v-flex>
中,您正在使用v-for="color in colors"
进行迭代,因此color
是在colors
数组中迭代的数组项的别名。但是在v-card>
元素的div
标记中,您正在迭代colors.hex
。所以它应该是v-for="(hex, index) in color.hex"
而不是colors.hex
hex
是在color.hex
中迭代的项目,它是一个字符串。所以你可以直接使用它,不需要hex[index]
<v-container grid-list-md text-xs-center>
<v-layout row wrap>
<v-flex class="item" xs12 sm4 v-for="color in colors" :key="color.id">
<v-card ripple hover class="">
<div class="item-color"
v-for="(hex, index) in color.hex"
:key="index"
:style="{ 'background-color': hex}">
</div>
<v-card-text class="px-0">{{ color.title }}</v-card-text>
</v-card>
</v-flex>
</v-layout>
</v-container>
答案 1 :(得分:1)
稍微改变你的v-for循环,因为你已经迭代color.hex
所有你需要引用的是十六进制。
<div v-for="color in colors">
<div class="item-color"
v-for="(hex, index) in color.hex"
:key="index"
:style="{ 'background-color': hex}">
</div>
</div>
这是一个工作小提琴https://jsfiddle.net/skribe/00cf8z7x/4/
如果您希望您的语法能够很好地阅读,那么请将对象中的十六进制更改为十六进制
colors: [
{
id: 'ssmf',
hexs: ['#297afb','#2898fb','#01d8fd'],
title: 'Sleek, Sophisticated, Mature & Formal'
},
....
然后你可以将你的v-for写成v-for="hex in color.hexs"