javascript - 在 angularJS 中使用 JSON 显示文件系统结构

标签 javascript angularjs

我需要一个 JSON 数组,其中包含具有相应属性(类型、名称、大小、创建、修改、上次访问等)的示例文件系统。然后我想将其绘制为树结构中的网络文件系统。 那么,我的 JSON 会是什么样子以及我应该如何在 angularJS 中制作该树?

版本:

我将 JSON 制作为 -

{
    "data" : {
        "path":[
            "My Files",
            "Documents"
        ],
        "data" : [
            {
                "name": "Work Documents",
                "type": "folder",
                "owner": "me",
                "size": "",
                "modified": "May 24, 2017",
                "opened": "May 22, 2017",
                "created": "May 22, 2017",
                "extention": "",
                "location": "My Files > Documents",
                "offline": true,
                "children" : [
                    {
                        "name": "Public Documents",
                        "type": "folder",
                        "owner": "public",
                        "size": "",
                        "modified": "July 8, 2015",
                        "opened": "July 8, 2015",
                        "created": "July 8, 2015",
                        "extention": "",
                        "location": "My Files > Documents",
                        "offline": true
                    },
                    {
                        "name": "Ongoing projects",
                        "type": "document",
                        "owner": "Emily Bennett",
                        "size": "1.2 Mb",
                        "modified": "July 8, 2015",
                        "opened": "July 8, 2015",
                        "created": "July 8, 2015",
                        "extention": "",
                        "location": "My Files > Documents",
                        "offline": true,
                        "preview": "assets/images/etc/sample-file-preview.jpg"
                    },
                    {
                        "name": "Shopping list",
                        "type": "document",
                        "owner": "Emily Bennett",
                        "size": "980 Kb",
                        "modified": "July 8, 2015",
                        "opened": "July 8, 2015",
                        "created": "July 8, 2015",
                        "extention": "",
                        "location": "My Files > Documents",
                        "offline": true,
                        "preview": "assets/images/etc/sample-file-preview.jpg"
                    }
                ]
            },
            {
                "name": "Private Documents",
                "type": "folder",
                "owner": "me",
                "size": "",
                "modified": "July 8, 2015",
                "opened": "July 8, 2015",
                "created": "July 8, 2015",
                "extention": "",
                "location": "My Files > Documents",
                "offline": true
            }
        ]
    }
}

但是我如何在 html 中迭代它?我目前正在显示它,但无法理解如何在单击文件夹时显示“ child ”。这是我的 html -

<tr ng-repeat="file in vm.data | filter:global.search" ng-click="vm.select(file)" ng-class="{'selected' : vm.selected === file}">
    <td class="file-icon">
        <i class="icon-{{file.type}}"></i>
    </td>
    <td class="name">{{file.name}}</td>
    <td class="type" hide show-gt-sm>{{file.type}}</td>
    <td class="owner" hide-xs>{{file.owner}}</td>
    <td class="size" hide-xs>{{file.size === '' ? '-': file.size}}</td>
    <td class="last-modified" hide show-gt-md>{{file.modified}}</td>
    <td class="show-details" hide-gt-md>
        <md-button class="md-icon-button sidenav-toggle" ng-click="vm.toggleDetails(file)" aria-label="Details" translate translate-attr-aria-label="FM.DETAILS">
            <md-icon md-font-icon="icon-information-outline"></md-icon>
        </md-button>
    </td>
</tr>

最佳答案

如果满足您的要求,您可以创建这样的 Json。假设您有一个名为 root 的根目录,并且它有子目录书籍和视频。

  Var root = {
      dirName: "root",
     metadata: {
       size: " 1 gb",
       type: "dir",
       last_modified: " 24 may 2017",
       // Other attributes
   },
   children: [
              {
     dirName: "books",
     metadata: {
       size: " 10 mb",
       type: "dir",
       last_modified: " 24 may 2017",
       // Other attributes
       },
       Children:{}
       },

       { 
          dirName: "videos",
     metadata: {
       size: " 10 mb",
       type: "dir",
       last_modified: " 24 may 2017",
       // Other attributes
       } 
      }
              ]

}

您现在可以根据需要对其进行修改

关于javascript - 在 angularJS 中使用 JSON 显示文件系统结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172662/

相关文章:

javascript - 如何使用 Angular 填充 select ng 选项

javascript - 从同一工厂调用 Angular 工厂中的变量

javascript - AngularJS:初始复选框值不在模型中

javascript - 使用可以从构造函数实例访问 this 的方法将函数添加到构造函数原型(prototype)

javascript - 如何将Jquery应用于文本框、CssClass而不是Jquery、Bootstrap中的ID

javascript - 解析 XML 并更新 anchor 标记?

Javascript按值从数组中删除数组元素

javascript - AngularJS 完全重置表单

asp.net - JavaScript 中的 ActiveXobject 错误

javascript - ui-router - $state.go() 不工作