javascript - 多个嵌套的ng-repeat-start无法显示数据

标签 javascript angularjs angularjs-ng-repeat

我正在尝试展平嵌套的 json 对象并将其显示在表格中。

所以我尝试在一个 div 中使用多个 ng-repeat-start 和 ng-repeat-end 元素。 但是不知何故数据没有显示。

笨蛋: http://plnkr.co/edit/apuf9YUYnkoSaCDaNYrC?p=preview

HTML :

<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.22/angular.js" data-semver="1.2.22"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">

    Data is  : 
    {{mydata}}

    <table cellspacing="1" border="1">
      <thead>
        <tr> 
        <td> MainTitle</td>
        <td> SubTitle</td>
        <td> LastTitle</td>
        <td> Final</td>
        </tr>

      </thead>
      <tbody>
      <div ng-repeat-start="main in mydata" ng-if="false"></div>    
      <div ng-repeat-start="sub in main.items" ng-if="false"></div>    
      <div ng-repeat-start="last in sub.l2items" ng-if="false"></div>


      <tr ng-repeat="final in last.l3items">
        <td> {{main.title}} </td>
        <td> {{sub.title}} </td>
        <td> {{last.title}} </td>
        <td> {{final}} </td>

      </tr>
      </tbody>
      <div ng-repeat-end ng-if="false"></div>    
      <div ng-repeat-end ng-if="false"></div>    
      <div ng-repeat-end ng-if="false"></div>

    </table>
  </body>

</html>

代码:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';



    $scope.mydata = [
      {
        title :"hello",
        items : [
          {
          title: "level 1 title",
          l2items : [
            {
            title : "level 2 title",
            l3items: [ "a","b" ]

           }
            ]
        }
        ,
         {
          title: "level 1 title 1 ",
          l2items : [
            {
            title : "level 2 title 1",
            l3items: [ "a 1","b 1" ]
           }
            ]
        }
      ]
      },{
      title :"hello 0",
        items : [
          {
          title: "level 1 title 0",
          l2items : [
            {
            title : "level 2 title 0",
            l3items: [ "a 0","b 0" ]

           }
            ]
        }
        ,
         {
          title: "level 1 title 1 0",
          l2items : [
            {
            title : "level 2 title 1 0",
            l3items: [ "a 1 0","b 1 0" ]
           }
            ]
        }
      ],
      }]
});

预期输出:(抱歉无法创建合适的表格)

主标题 |副标题 |最后标题 |决赛

你好|一级标题|二级标题|a

你好|一级标题|二级标题|b

你好 |level 1 title 1 |level 2 title 1 |a 1

你好 |level 1 title 1 |level 2 title 1 |b 1

你好 0 |级别 1 标题 0 |级别 2 标题 0 |a 0

你好 0 |级别 1 标题 0 |级别 2 标题 0 |b 0

你好 0 |级别 1 标题 1 0 |级别 2 标题 1 0 |a 1 0

你好 0 |级别 1 标题 1 0 |级别 2 标题 1 0 b 1 0

最佳答案

我认为问题出在您的 HTML 上。最有可能在您的表中有 div。如果将其转换为 <div>然后就可以了。我看到的另一个问题是您重复关闭 </body>标签。

我明白你为什么用 <div> 来做这件事s 和 ng-if秒。曾经有一个 ng-repeat 的注释指令版本,或者至少努力创造一个,但我认为他们遇到了 browser limitations .

这是一个similar issue .也许您会喜欢他们的解决方案。

否则,替换你的<div><tr>小号:

  <tr ng-repeat-start="main in mydata" ng-if="false"></tr>
  <tr ng-repeat-start="sub in main.items" ng-if="false"></tr>
  <tr ng-repeat-start="last in sub.l2items" ng-if="false"></tr>

  <tr ng-repeat="final in last.l3items">
    <td> {{main.title}} </td>
    <td> {{sub.title}} </td>
    <td> {{last.title}} </td>
    <td> {{final}} </td>

  </tr>

  <tr ng-repeat-end ng-if="false"></tr>
  <tr ng-repeat-end ng-if="false"></tr>
  <tr ng-repeat-end ng-if="false"></tr>

http://plnkr.co/edit/jPtHDbaonUtc9tXQadc2?p=preview

关于javascript - 多个嵌套的ng-repeat-start无法显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976677/

相关文章:

javascript - 为图像添加旋转效果

javascript - 在数组中,如何使用 .sort() 根据一个属性将对象分组到另一个属性中?

javascript - 在 Gulp/BrowserSync 中启用 Cors

javascript - 减少由 ui-grid 或替代网格解决方案创建的监视

javascript - 重新排序某些元素后如何重置 ng-repeat block ?

javascript - 为什么我的 img 中的 require() 在与 Bulma 一起使用时无法正常工作?

javascript - React应用程序中src文件夹的Webpack别名?

javascript - 如何使用elastic.js获取 Elasticsearch 上的所有索引?

javascript - Angular : How to show icon. png 取决于项目的属性?

javascript - angular js ng-repeat范围内的单选按钮列表,默认选中