使用 v-for 循环绑定不同颜色的背景

Ton*_*ony 4 vue.js vuejs2 v-for

我正在使用 vuetify 并尝试遍历包含我想作为背景应用的不同十六进制代码的 javascript 对象。

最终结果将如下所示:

在此处输入图片说明

我正在尝试将每个十六进制代码绑定到每个不同项目颜色的背景。

下面是我尝试做的事情:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

这是数据对象:

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'
            }
            ]
        }
      }
  }
Run Code Online (Sandbox Code Playgroud)

Vam*_*hna 5

有两个错误:

  1. <v-flex>您使用进行迭代时,在数组中迭代的数组项的别名也是v-for="color in colors"如此。但是在元素的标签中,您正在迭代. 所以应该不是colorcolorsv-card>divcolors.hexv-for="(hex, index) in color.hex"colors.hex
  2. 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>
    
    Run Code Online (Sandbox Code Playgroud)