【发布时间】:2017-10-11 06:20:13
【问题描述】:
我想知道如何迭代组件名称列表(来自对 API 服务器的 AJAX 调用)并将它们呈现为组件,并将相关属性传递给每个组件(即动态绑定它们的属性) .
到目前为止,我已经成功地迭代了代表组件的 JSON 项目列表,并成功渲染了这些组件。我现在想做的是使用v-bind 绑定每个组件的属性。
在下面的示例中,item-one 组件将接收具有item1.jpg 值的image 属性;并且item-two 组件不会接收任何属性。
<template>
<div v-for="item in items">
<component :is="Object.keys(item)[0]" :v-bind="???"></component>
</div>
</template>
<script>
import ItemOne from '../components/item-one'
import ItemTwo from '../components/item-two'
export default {
components: {
ItemOne,
ItemTwo
},
asyncData () {
return {
items: [
{ 'item-one': { 'image': 'item1.jpg' } },
{ 'item-two': { } }
]
}
}
}
</script>
我尝试使用:v-bind="Object.values(Object.keys(item)[0])",但我在渲染元素中获得了v-bind="[object Object]" 属性。
【问题讨论】:
-
只是
v-bind。没有冒号 -
@thanksd 仍然不起作用。
-
应该是
v-bind="item[Object.keys(item)[0]]"。可能有助于更改items的结构。 -
是的,我对如何构建它感到困惑,但我真的很喜欢你重构的简单性。更容易推理,几乎不言自明。
标签: javascript vue.js vuejs2 vue-component nuxt.js