使用 ng-repeat 将静态表更改为动态表

Posted

技术标签:

【中文标题】使用 ng-repeat 将静态表更改为动态表【英文标题】:Change static table to dynamic using ng-repeat 【发布时间】:2018-06-24 22:07:26 【问题描述】:

我有一个作为父子结构的 JSON,我将它显示在一个表格中,该表格在单击行时展开,显示其子元素。

该表适用于静态数据。

我正在尝试使用 angular ng-repeat 使用下面的 JSON 使其动态化,但是 卡在中间,因为我无法使用 <tr> 重复子元素

请找小伙伴here JSON:

  "fruit": [
    
      "fruitName": "All",
      "season": [
        
          "seasonName": "All",
          "yearValues": [
            
              "year": 2017,
              "value": 200
            ,
            
              "year": 2018,
              "value": 200
            
          ]
        ,
        
          "seasonName": "Sept",
          "yearValues": [
            
              "year": 2017,
              "value": 100
            ,
            
              "year": 2018,
              "value": 100
            
          ]
        ,
        
          "seasonName": "Oct",
          "yearValues": [
            
              "year": 2017,
              "value": 100
            ,
            
              "year": 2018,
              "value": 100
            
          ]
        
      ]
    ,
    
      "fruitName": "Orange",
      "season": [
        
          "seasonName": "All",
          "yearValues": [
            
              "year": 2017,
              "value": 100
            ,
            
              "year": 2018,
              "value": 100
            
          ]
        ,
        
          "seasonName": "Sept",
          "yearValues": [
            
              "year": 2017,
              "value": 50
            ,
            
              "year": 2018,
              "value": 50
            
          ]
        ,
        
          "seasonName": "Oct",
          "yearValues": [
            
              "year": 2017,
              "value": 50
            ,
            
              "year": 2018,
              "value": 50
            
          ]
        
      ]
    ,
    
      "fruitName": "Grapes",
      "season": [
        
          "seasonName": "All",
          "yearValues": [
            
              "year": 2017,
              "value": 100
            ,
            
              "year": 2018,
              "value": 100
            
          ]
        ,
        
          "seasonName": "Sept",
          "yearValues": [
            
              "year": 2017,
              "value": 50
            ,
            
              "year": 2018,
              "value": 50
            
          ]
        ,
        
          "seasonName": "Oct",
          "yearValues": [
            
              "year": 2017,
              "value": 50
            ,
            
              "year": 2018,
              "value": 50
            
          ]
        
      ]
    
  ]

【问题讨论】:

【参考方案1】:

你可以这样做:

        <tbody>
            <tr data-toggle="collapse" data-target=".order11" ng-repeat="item in result.fruit">
                <td>item.fruitName</td>
                <td>All</td>
                <td>getValue(item, '2017');</td>
                <td>getValue(item, '2018');</td>
                <td>getValue(item, '2017') + getValue(item, '2018');</td>
            </tr>
            <tr class="collapse order11">
                <td></td>
                <td>Sept</td>
                <td>100</td>
                <td>100 </td>
                <td>200</td>
            </tr>
            <tr class="collapse order11">
                <td></td>
                <td>Oct</td>
                <td>100</td>
                <td>100 </td>
                <td>200</td>
            </tr>                        
        </tbody>

在您的控制器中将 getValue 定义为:

app.controller('MainCtrl', function($scope) 
    $scope.result = ...

    $scope.getValue = function(fruitItem, year) 
      var res = fruitItem.season[0].yearValues.filter(function(yearValues) 
        return yearValues["year"] == year;
      );
      return res[0].value;
    
);

Here 是个笨蛋。

那么如果你需要为每个季节都这样做你只需要在getValue函数中添加一个新参数

【讨论】:

以上是关于使用 ng-repeat 将静态表更改为动态表的主要内容,如果未能解决你的问题,请参考以下文章

ng-repeat:动态颜色表背景

将数据导入报表后,链接工作表更改为只读

如何将使用 ng-repeat 动态创建的 html 表单的输入元素的值传递给 ng-controller

Angularjs列表项边距问题将ng-repeat元素与静态元素结合起来

将 hive 外部表更改为同一数据库中的内部表也会从另一个表中删除数据

删除动态添加的值到 ng-repeat(angularjs)