首页 > 解决方案 > 如何将 v-for 索引传递给 Vue 中的子级?

问题描述

我有以下父子组件。在我使用obj.Arraywithv-for列出多个子组件的父组件中。问题是每个孩子都是一样的stuff1stuff2但我需要为每个孩子抓取每个元素obj.array。这样做的正确方法是什么?谢谢

家长:

<template>
  <div>
    <child v-bind:obj="obj" v-for="(arrVal, index) in obj.array" :id="index" :key="arrVal"/>
  </div>
</template>

<script>
export default {
  data() {
    return {
      obj: { stuff1: "str1", stuff2: "str2", array: ["arrVal1", "arrVal2", "arrVal3"] }
    };
  }
};
</script>

孩子:

<template>
  <div>
    <p>{{obj.stuff1}}</p>
    <p>------</p>
    <p>{{obj.stuff2}}</p>
    <p>------</p>
    <p>{{obj.array[index]}}</p>
  </div>
</template>

    <script>
export default {
  props: { obj: Object }
};
</script>

我想渲染的内容:

str1 ------ str2 ------ arrVal1

str1 ------ str2 ------ arrVal2

str1 ------ str2 ------ arrVal2

标签: javascriptvue.js

解决方案


试试这个:

<template>
  <div v-for="val in obj.array">
    <p>{{obj.stuff1}}</p>
    <p>------</p>
    <p>{{obj.stuff2}}</p>
    <p>------</p>
    <p>{{val}}</p>
  </div>
</template>

    <script>
export default {
  props: { obj: Object }
};
</script>

我的建议只是迭代子组件中的数组。


推荐阅读