javascript - 将 ng-repeat-start 和 ng-repeat-end 与嵌套转发器一起使用

标签 javascript angularjs

我正在尝试使用 ng-repeat 来遍历嵌套的树状数组。

Plunkr Here

HTML

<div layout></div>
<script type="text/ng-template" id="layout">
  <div class="layout" ng-repeat-start="data in data.nodes" ng-include="data.name"></div>
  <div ng-repeat-end>End of repeater</div>
</script>
<script type="text/ng-template" id="box">
  <div class="box">Box</box>
</script>

JavaScript

var myApp = angular.module('myApp', []);
myApp.directive('layout', function() {

  return {
    templateUrl: 'layout',
    controller: function($scope) {
      $scope.data = {
        'nodes': [
          {
          'name': 'layout',
          'nodes': [{'name': 'box'}, {'name': 'box'}, {'name': 'box'}, {'name': 'box'}]
          }, 
          {
          'name': 'layout',
          'nodes': [{'name': 'box'}, {'name': 'box'}, {'name': 'box'}, {'name': 'box'}]
          }
        ]
      }
    }
  }
})

我的问题是,我需要一种方法来确定我何时处于数组中特定级别的最后一项,但由于 Angular 通过深度优先来遵循递归,所以我无法使用 ng -repeat-startng-repeat-end:

Problem

当然,预期的结果是:

Expected outcome

我如何知道我是否已达到特定级别的末尾?

最佳答案

您可以使用 $last 来确定每次迭代结束的时间:

<div ng-show="$last" ng-repeat-end>End of repeater</div>

这给了我你问题中的后一个结果。

关于javascript - 将 ng-repeat-start 和 ng-repeat-end 与嵌套转发器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048657/

相关文章:

Javascript window.location 不起作用

javascript - Paypal 不会将沙盒交易数据发送到 IPN

javascript - 根据正在过滤的值更改字体颜色angularjs

asp.net-mvc-4 - 如何将 ASP.Net MVC4 Web API 与 AngularJS 部分 View (又名 ng-include)一起使用

javascript - Angular 力矩 : Moment Timezone has no data for America/New_York

javascript - 在包含特定单词或短语的特定类之后插入文本

javascript - 从以 _ 开头的 JavaScript 变量可以推断出什么?

javascript - 销毁 Phaser.Game 实例的正确方法是什么?

javascript - 根据上一个字段动态填充下拉列表

javascript - 在未打开开发工具的情况下,Angular-poller 在 IE11 上不起作用