【问题标题】:Need angular direction for ng-repeat?ng-repeat 需要角度方向吗?
【发布时间】:2017-05-29 10:48:59
【问题描述】:

我对 ng-repeat 指令的结构有点复杂,并且在循环遍历它时卡住了。我只是在数组中发布数据表示 JSON 格式

{"data":[
         ["sameer","1001",
          [
           {"button_icon":"fa fa-pencil",
            "button_tt":"create invoice",
            "button_color":"btn-success"
           },
           {"button_icon":"fa fa-pencil",
            "button_tt":"create invoice",
            "button_color":"btn-danger"
           }
          ]
         ],
         ["jack","1002",
          [
           {"button_icon":"fa fa-pencil",
            "button_tt":"create invoice",
            "button_color":"btn-success"
           },
           {"button_icon":"fa fa-pencil",
            "button_tt":"create invoice",
            "button_color":"btn-danger"
           }
          ]
        ]
}

它是一个数组(数组(数组())),最后一个内部数组是一个按钮,它将附加到每一行。我在附加那个按钮时被卡住了。我已经在使用嵌套的 ng-repeat 但对第三个感到困惑。

这是我的 html

<tbody>
    <tr ng-repeat = "row in list.data">

      <td ng-if = "(row.length - 1) != $index"  class="text-center"  ng-repeat = "val in row track by $index" ng-cloak>{{val}}</td>
      <td ng-if = "(row.length - 1) == $index" class="text-center">
          <div class="btn-group" ng-cloak>
            <a ng-repeat = "btn in row" data-toggle="tooltip" title="{{btn.button_tt}}" class="btn btn-xs {{btn.button_color}}" data-original-title="Edit" ng-click="viewExpense(1)"><i class="{{btn.button_icon}}"></i></a>
          </div>
        </td>
    </tr>

【问题讨论】:

  • 你能用 plunker 提供这个正确的格式吗
  • 请提供一个plunker。

标签: javascript angularjs angularjs-ng-repeat angular-ng-if


【解决方案1】:

我相信你还需要一个循环。

row in list.data中的row是第一级:

["sameer","1001",
      [
       {"button_icon":"fa fa-pencil",
        "button_tt":"create invoice",
        "button_color":"btn-success"
       },
       {"button_icon":"fa fa-pencil",
        "button_tt":"create invoice",
        "button_color":"btn-danger"
       }
      ]
 ]

btn in row 中的btn 是第二层,也是一个数组:

[
    {"button_icon":"fa fa-pencil",
     "button_tt":"create invoice",
     "button_color":"btn-success"
    },
    {"button_icon":"fa fa-pencil",
      "button_tt":"create invoice",
      "button_color":"btn-danger"
    }
]

你应该像这样添加第三层:

<div class="btn-group" ng-cloak>
    <div ng-repeat = "innerRow in row">
        <a ng-repeat = "btn in innerRow" data-toggle="tooltip" title="{{btn.button_tt}}" class="btn btn-xs {{btn.button_color}}" data-original-title="Edit" ng-click="viewExpense(1)"><i class="{{btn.button_icon}}"></i></a>
    </div>
</div>   

希望对你有帮助

【讨论】:

  • 非常感谢。你给了我一个对我有用的提示。再次感谢您。
【解决方案2】:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
<table>
    <tr ng-repeat="row in data.data">
        <td ng-if="(row.length - 1) != $index" class="text-center" ng-repeat="val in row track by $index" ng-cloak>
            {{val}}
        </td>
        <td ng-if="(row.length - 1) == $index" class="text-center">
            <div class="btn-group" ng-cloak>
                <div ng-repeat="innerRow in row">
                    <a ng-repeat="btn in innerRow" data-toggle="tooltip" title="{{btn.button_tt}}"
                       class="btn btn-xs {{btn.button_color}}" data-original-title="Edit" ng-click="viewExpense(1)"><i
                            class="{{btn.button_icon}}"></i></a>
                </div>
            </div>
        </td>
    </tr>
</table>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
   $scope.data = {
  "data": [
    [ "sameer", "1001",
      [
        {
          "button_icon": "fa fa-pencil",
          "button_tt": "create invoice",
          "button_color": "btn-success"
        },
        {
          "button_icon": "fa fa-pencil",
          "button_tt": "create invoice",
          "button_color": "btn-danger"
        }
      ]
    ],
    [ "jack", "1002",
      [
        {
          "button_icon": "fa fa-pencil",
          "button_tt": "create invoice",
          "button_color": "btn-success"
        },
        {
          "button_icon": "fa fa-pencil",
          "button_tt": "create invoice",
          "button_color": "btn-danger"
        }
      ]
    ]
  ]
};
});
</script>

</body>

【讨论】:

    【解决方案3】:

    这里是演示Jsfiddle

    Js

      var app = angular.module('myApp', []);
    
      app.controller('ctrl', function($scope) {
        $scope.list = {
          "data": [
            ["sameer", "1001", [{
              "button_icon": "fa fa-pencil",
              "button_tt": "create invoice",
              "button_color": "btn-success"
            }, {
              "button_icon": "fa fa-pencil",
              "button_tt": "create invoice",
              "button_color": "btn-danger"
            }]],
            ["jack", "1002", [{
              "button_icon": "fa fa-pencil",
              "button_tt": "create invoice",
              "button_color": "btn-success"
            }, {
              "button_icon": "fa fa-pencil",
              "button_tt": "create invoice",
              "button_color": "btn-danger"
            }]]
          ]
        };
      });
    

    HTML

        <div ng-app='myApp'>
    
          <div ng-controller='ctrl'>
            <div ng-repeat="row in list.data">
              {{row[0]}} {{row[1]}}
              <a href='#' ng-repeat='btn in row[2]'> {{btn.button_icon}} {{btn.button_tt}} {{btn.button_color}} <br></a>
              <hr>
            </div>
          </div>
        </div>
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多