在Vuejs中将数组传递给prop

时间:2019-08-13 21:33:41

标签: arrays vue.js vue-props

我将一个值列表从一个父组件传递给它的子组件,并希望接收所有值,但是我只接收最后一个。

这是父组件的代码:

     <app-spider-web
     v-for="skill in skills"
     :name="skill.name"
     :required="skill.required"
     :vMode1="skill.vMode1"
     ></app-spider-web>

   ...       


   skills: [
      {
        name: 'Frozen Yogurt',
        required: 1,
        vMode1: ''
      },
      {
        name: 'Ice cream sandwich',
        required: 3,
        vMode1: ''
      },
      {
        name: 'Eclair',
        required: 1,
        vMode1: ''
      }
    ]

这是子组件的代码:

props:['name','required','vMode1']

这样,我就一个接一个地接收数据,如果要打印实例“名称”,它仅显示列表中的姓氏“ Eclair”,而我希望在子组件中有一个数组,其中包含所有名称在他们之中。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

像这样,您将在子组件名称数组和当前项目的索引中收到,因此您只能在子组件中获得项目的名称。

也不要忘记在使用v-for指令的位置添加唯一的

Parent.vue

<template>
  <div>
    <child
      v-for="(skill, index) in skills.length"
      :key="skill.name"
      :index="index"
      :names-array="skills.map(a => a.name)"
    />
  </div>
</template>

<script>
import Child from './Child'

export default {
  name: 'Parent',

  components: {
    Child
  },

  data () {
    return {
      skills: [
        {
          name: 'Frozen Yogurt',
          required: 1,
          vMode1: ''
        },
        {
          name: 'Ice cream sandwich',
          required: 3,
          vMode1: ''
        },
        {
          name: 'Eclair',
          required: 1,
          vMode1: ''
        }
      ]
    }
  }
}
</script>

Child.vue

<template>
  <div>
    <div>Index: {{ index }}</div>
    <div>Names Array: {{ namesArray }}</div>
    <div>Name: {{ namesArray[index] }}</div>
  </div>
</template>

<script>
export default {
  name: "Child",
  props: ["names-array", "index"]
};
</script>

输出:

  

索引:0个名称数组:[“冷冻酸奶”,“冰淇淋三明治”,   “小饼”]名称:冰冻酸奶

     

索引:1个名称数组:[“冰冻酸奶”,“冰淇淋三明治”,   “ Eclair”]名称:冰淇淋三明治

     

索引:2个名称数组:[“冷冻酸奶”,“冰淇淋三明治”,   “ Eclair”]名称:Eclair