我正在使用 vuetify 并尝试遍历包含我想作为背景应用的不同十六进制代码的 javascript 对象。
最终结果将如下所示:
我正在尝试将每个十六进制代码绑定(bind)到每个不同项目颜色的背景。
以下是我尝试做的事情:
<!-- 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'
}
]
}
}
}
最佳答案
有两个错误:
<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>