javascript - 单击列表项后显示子列表

标签 javascript angularjs json

我将以下 json 传递到我的 View :

$scope.mockData = [
  {
    "folder": "folder1",
    "reports": [{ "name": "report1" }, { "name": "report2" }, { "name": "report3" }]
  },
  {
    "folder": "folder2",
    "reports": [{ "name": "report5" }, { "name": "report6" }, { "name": "report7" }]
  },
  {
    "folder": "folder3",
    "reports": [{ "name": "report8" }, { "name": "report9" }, { "name": "report10" }]
  }
];

要迭代文件夹列表,我的 View 中有以下内容:

<div class="row" ng-repeat="item in mockData | filter:query">
  <div class="col-md-6">
    <a href="" class="list-group-item" ng-cloak >
      <i class="glyphicon glyphicon-folder-close"></i>
      &nbsp;{{item.folder}}
    </a>
  </div>
</div>

我想在我的 View 中实现以下功能: 当我点击:

<a href="" class="list-group-item" ng-cloak >
      <i class="glyphicon glyphicon-folder-close"></i>
      &nbsp;{{item.folder}}
</a> 

我应该看到一个新的 div,但现在包含以下项目:

"reports": [{ "name": "report1" }, { "name": "report2" }, { "name": "report3" }

我该怎么做?

最佳答案

您可以向 MOCK JSON 添加 bool 参数,例如 'showFolderContents':false。向文件夹图标添加 ng-click 行为,当单击时,它会在 true/false 之间切换该参数。然后在 ng-repeat='item in mockData' 中,您必须使用 ng-show='item.showFolderContents' 创建一个嵌套的 ng-repeat='report in item.reports' 。

您可以使用如下方式处理 ng-click 行为:

<i class="glyphicon glyphicon-folder-close" ng-click='toggleShowingFolderContents(item)></i>

并在你的 Angular 中创建一个函数,例如:

$scope.toggleShowingFolderContents = function(item){
item.showFolderContents = !item.showFolderContents
}

所以你的 html 最终看起来像这样:

<div class="row" ng-repeat="item in mockData | filter:query">
<div class="col-md-6">
<a href="" class="list-group-item" ng-cloak >
  <i class="glyphicon glyphicon-folder-close" ng-  click='toggleShowingFolderContents(item)></i>
<div ng-show='item.showFolderContents'>
<div ng-repeat='report in item.reports'>
{{report.name}}
</div>
</div>

关于javascript - 单击列表项后显示子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859261/

相关文章:

angularjs - 有条件地在 angular.js 中添加元素属性

ios - ObjectMapper如何映射[String :CustomObject] With Index as CustomObject Property的Dictionary

javascript - 在输入框的开头显示光标/插入符号

javascript - 将输入从隐藏更改为文件

javascript - 如何根据变量值使 useEffect react 钩子(Hook)重新渲染?

javascript - Protractor :计算所有超链接并在页面上测试它们

javascript - JavaScript 确认框中的取消选项仅返回 true 条件

javascript - 为数组创建像 ngModel 这样的 AngularJS 指令

c# - Newtonsoft.Json 反序列化 base64 图像失败

c# - 从 Json 字典序列化 C# 字典