📜  vuejs 嵌套 v-for - Javascript (1)

📅  最后修改于: 2023-12-03 15:21:05.531000             🧑  作者: Mango

Vue.js中的嵌套v-for

在Vue.js中,我们经常使用v-for指令迭代数组或对象的属性来渲染数据列表。但在某些情况下,我们需要对该数组中的每个元素成员进行更深层次的迭代和渲染,这就需要用到嵌套v-for了。

1. 基本用法

在Vue.js中,我们可以通过嵌套v-for迭代多维数组来展现更复杂的数据结构。下面是一个基本的示例:

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.name }}
        <ul>
          <li v-for="subItem in item.subItems" :key="subItem.id">
            {{ subItem.name }}
          </li>
        </ul>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        {
          id: 1,
          name: 'Item 1',
          subItems: [
            { id: 1, name: 'Sub Item 1' },
            { id: 2, name: 'Sub Item 2' },
            { id: 3, name: 'Sub Item 3' },
          ],
        },
        {
          id: 2,
          name: 'Item 2',
          subItems: [
            { id: 1, name: 'Sub Item 1' },
            { id: 2, name: 'Sub Item 2' },
          ],
        },
      ],
    };
  },
};
</script>

在上面的示例中,我们展示了一个包含多层子元素的数组列表,每个子元素都有一个子数组。我们使用两个嵌套的v-for指令来迭代父/子项目数组并将它们渲染为有序列表。

2. 嵌套的循环模板

通常在Vue.js中,我们使用一个组件或者一个模板,通过v-for循环来渲染一组数据。但是,有时候可能需要使用嵌套循环模板来渲染更加复杂的数据集,每个嵌套的循环模板都有自己的作用域和变量名。

<template>
  <div>
    <div v-for="(section, i) in sections" :key="i" class="section">
      <h3>{{ section.title }}</h3>

      <div v-for="(item, j) in section.items" :key="j" class="item">
        <h4>{{ item.title }}</h4>
        <p>{{ item.description }}</p>

        <div v-for="(value, key) in item.properties" :key="key" class="property">
          <strong>{{ key }}:</strong>
          <span :class="typeof value">{{ value }}</span>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      sections: [
        {
          title: 'Section 1',
          items: [
            {
              title: 'Item 1',
              description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
              properties: {
                Prop1: 'Value 1',
                Prop2: 28,
                Prop3: true,
              },
            },
            {
              title: 'Item 2',
              description: 'Phasellus sit amet luctus enim. Sed eget purus ultrices, ullamcorper risus sed, imperdiet tortor. ',
              properties: {
                Prop1: 'Value 2',
                Prop2: 42,
                Prop3: false,
              },
            },
          ],
        },
        {
          title: 'Section 2',
          items: [
            {
              title: 'Item 1',
              description: 'Vivamus sed libero vestibulum, aliquet purus vel, accumsan sapien.',
              properties: {
                Prop1: 'Value 3',
                Prop2: 53,
                Prop3: true,
              },
            },
          ],
        },
      ],
    };
  },
};
</script>

在上面的示例中,我们展示了一个更加复杂的数据结构,由分组的部分、部分中的项目以及每个项目的属性组成。我们遍历每个组件并在其内部循环遍历项目和属性。在这个过程中,我们可以访问每个作用域中的变量和函数,并进行任意的计算和处理。

3. 总结

嵌套v-for指令是Vue.js中强大的迭代显示功能,它可以帮助我们轻松地展示多层嵌套的数据结构,并用模板来控制其外观和行为。无论你是在制作电子商务网站、新闻网站、个人博客或其他类型的网站,Vue.js中的嵌套v-for都是一项非常实用的功能。