我将一个值列表从一个父组件传递给它的子组件,并希望接收所有值,但是我只接收最后一个。
这是父组件的代码:
<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”,而我希望在子组件中有一个数组,其中包含所有名称在他们之中。最好的方法是什么?
答案 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