工作中遇到一个问题,就是需要在不知道几层children的情况下,一直循环有值的children,其中参考了一篇文章,和自己的修改,完成了这个功能。
<div v-for="cItem in item.children" style="margin-top: 20px">
<utils :cItem="cItem"></utils>
<div v-for="ccItem in cItem.children" style="margin-top: 20px">
<utils :cItem="ccItem"></utils>
<div v-for="cccItem in ccItem.children" style="margin-top: 20px">
<utils :cItem="cccItem"></utils>
</div>
</div>
</div>
其中utils 就是我一直想要循环的展示children内容的组件。
最终代码是这样
index.vue中:
<div v-for="item in currentNode">
<div style="width: 100%">
<h3 :class="currentId == item.docId ? 'current' : ''">
{{ item.title }}
</h3>
<div class="itemContent" v-html="item.content"></div>
<utils
v-for="(cItem, index) in item.children"
:cItem="cItem"
:key="index"
style="margin-top: 20px"
></utils>
</div>
</div>
utils.vue中:
<template>
<div>
<h3>{{ cItem.title }}</h3>
<div
style="
margin-top: 10px;
min-height: 200px;
border: 0.5px solid rgba(43, 90, 197, 0.5);
padding: 10px;
"
v-html="cItem.content"
></div>
<utils
v-if="cItem.children"
v-for="item in cItem.children"
:cItem="item"
style="margin-top: 20px"
></utils>
</div>
</template>
<script>
export default {
name: "utils",
props: {
cItem: {
type: Object,
default: {},
},
},
};
</script>
<style lang="less" scoped></style>
最终展示效果如下:
把左边包含许多层级的chilrden在右边进行展示:
(左边层级)
(右边展示,代码处理过后的效果)
参考的文章:
如何在vue中,不知道有几层v-for的情况下实现递归组件?_vue v-for 递归-CSDN博客
感谢文章作者
Ending~