【发布时间】:2019-12-16 07:21:21
【问题描述】:
不确定这是否可行,但值得一试。
我正在尝试构建一个系统,其中一组组件可以动态呈现,在同一个组件中,在一组动态嵌套的 v-for 循环中。
举个例子。
假设我在这个结构中有一系列<div/>s 和一个json
list : [
['Test','Test],
['Test2', 'Test2],
['Test3','Test3],
]
这将呈现:
<div>
<div>
<div>
Test
</div>
<div>
Test
</div>
</div>
<div>
<div>
Test2
</div>
<div>
Test2
</div>
</div>
<div>
<div>
Test3
</div>
<div>
Test3
</div>
</div>
</div>
但是,如果我添加了另一组嵌套, 例如
list : [
['Test','Test],
['Test2', 'Test2],
['Test3',['Test4', 'Test4']],
]
它会像这样呈现,
<div>
<div>
<div>
Test
</div>
<div>
Test
</div>
</div>
<div>
<div>
Test2
</div>
<div>
Test2
</div>
</div>
<div>
<div>
Test3
</div>
<div>
<div>
Test4
</div>
<div>
Test4
</div>
</div>
</div>
</div>
我知道这可以通过固定级别的嵌套来完成 例如
<div>
<div v-for="(item,index) in list" :key="index">
<div v-for="(subItem, subIndex) in item :key="subIndex">
{{subItem}}
</div>
</div>
</div>
但是,如果必须在运行时对其进行解释,我不确定如何使其对动态嵌套级别做出反应。 如果有人对此有任何想法,我将不胜感激。
编辑:澄清一下,我要寻找的解决方案适用于未知的嵌套。
【问题讨论】:
-
再做一轮循环,用v-if判断是否渲染(即是否存在另一个嵌套)。
-
我不确定如果进一步嵌套它会如何工作,例如 [,Test, [Test, [Test, [...etc]] ] ] @Arc
-
它应该可以正常工作。
-
你应该使用递归函数。
标签: javascript vue.js vuejs2 frontend