json - angularjs nested ng-repeat for folder structure -


i need create list of files , folders json object. folder structure can go deep in example have nested 3 levels. eg:

  • files
  • folder
    • files
    • subfolder
      • files
      • subsubfolder
        • files

here 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 don't know how many levels json can go, how structure 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 better way this?

thanks links, helpful. in end did trick.

<script type="text/ng-template" id="field_renderer.html">     <ol ng-model="folder.folders">       <strong>{{folder.name}}</strong>       <ol><li ng-repeat="file in folder.files">{{file.name}}</li></ol>       <li ng-repeat="folder in folder.folders" ng-include="'field_renderer.html'"></li>     </ol> </script>  <ol ng-model="list">     <li ng-repeat="folder in list" ng-include="'field_renderer.html'"></li> </ol> 

Comments