先看效果图:

1:先mock数据
//list.js
var list = {
list: [{
title: '成人票',
children: [{
title: '成人三馆联票'
},
{
title: '成人四馆联票',
children: [{
title: '成人四馆联票(一)'
}]
}]
},
{
title: '学生票'
},
{
title: '儿童票'
},
{
title: '军人票'
}]
}
export default list2:创建组件 a-vue.vue
<template>
<div>
<div class="item border-bottom" v-for="(item, index) in list" :key="index">
<div class="item-title">
<span class="item-title-icon"></span>
{{item.title}}<br/>
</div>
<div v-if="item.children" class="item-cildren">
<detail-list :list="item.children"></detail-list> //通过name进行递归调用
</div>
</div>
</div>
</template>
<script>
export default {
name:'detailList', // name用于组件的递归调用
props:['list'], //接收父组件传递的prop数据,然后进行循环数据
}
</script>
<style <style lang="scss" scoped>
.item-cildren {
.item-title {
color: red;
margin-left: 70px;
}
.item-cildren {
.item-title {
color: green;
margin-left: 150px;
}
}
}
</style>3:父组件引用a-vue.vue
<template>
<div>
<a-vue :list="list"></a-vue>
</div>
</template>
<script>
import lists from '@/../mock/mock.js'; //引入数据
import aVue from './a.vue' //引入组件
export default {
data(){
return {
list: lists.list //注意根据数据的导出格式进行恰当的赋值
}
},
components:{ //组件定义
aVue
},
mounted(){
console.log({...this.list.list})
}
}
</script>
版权声明:本文为qq_35176916原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。