I need to create a list of files and folders from a JSON object. Folder structure can go very deep but in my example I have only nested 3 levels. eg:
- Files
- Folder
- Files
- subFolder
- Files
- subSubFolder
- Files
Here is some sample JSON:
{
"List": [
{
"id": 0,
"files": [
{
"name": "Test-1.docx",
"id": 80
},
{
"name": "Test-2.docx",
"id": 81
}
],
"folders": [
{
"name": "Folder Top Level",
"folders": [
{
"name": "Folder Sub Level",
"folders": [
{
"name": "Folder Sub Sub Level",
"folders": [],
"files": [
{
"name": "Test-7.docx",
"id": 87
},
{
"name": "Test-8.docx",
"id": 88
}
]
}
],
"files": [
{
"name": "Test-5.docx",
"id": 85
},
{
"name": "Test-6.docx",
"id": 86
}
]
}
],
"files": [
{
"name": "Test-3.docx",
"id": 83
},
{
"name": "Test-4.docx",
"id": 84
}
]
}
]
}
]
}
Given that I don't know how many levels my JSON can go, how would I structure the ng-repeat?
<div>
<ol ng-model="list">
<li ng-repeat="file in list.files">{{file.name}}</li>
<li ng-repeat="folder in list.folders">
{{folder.name}}
<ol ng-model="folder.folders">
<li ng-repeat="folder in folder.folders" ng-if="folder.folders.length > 0">
{{folder.name}}
</li>
<li ng-repeat="file in folder.files" ng-if="folder.files.length > 0">
{{file.name}}
</li>
</ol>
</li>
</ol>
</div>
Is there a better way to do this?