使用ng-repeat

时间:2017-02-04 04:10:26

标签: angularjs angularjs-ng-repeat grouping accordion

我需要合并并在一行中显示具有相同ID的特定数据。我正在使用ng-repeat来显示数据。 示例JSON:

$scope.sampleTest = [{"city": "Chennai", "name":"Sample"},
                 {"city": "Madurai", "name":"Test"}, {"city": "Chennai", "name":"Testing"}]

我正在使用uibaccordion对数据进行分组。

预期产出:     *钦奈      样品,测试     *马杜赖      测试

我将获得动态json数据。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

您可以使用过滤器

按城市名称进行分组
<body ng-controller="myCtrl">
  <div ng-repeat="(key, value) in sampleTest | groupBy: '[city]'">
    <div ng-repeat="player in value">
       {{key}} {{ player.name }} 
    </div>
  </div>
</body>

<强>样本

&#13;
&#13;
var app = angular.module('sampleApp', ['angular.filter']);

 
       
app.controller('myCtrl', function($scope) {
     $scope.sampleTest = [{"city": "Chennai", "name":"Sample"},
     {"city": "Madurai", "name":"Test"}, {"city": "Chennai", "name":"Testing"}];
 });
&#13;
<!DOCTYPE html>
<html ng-app="sampleApp" xmlns="http://www.w3.org/1999/xhtml">

<head>
  <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.10/angular.min.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/angular-filter/0.4.7/angular-filter.js"></script>
  <script src="app.js"></script>
</head>
<body ng-controller="myCtrl">
  <div ng-repeat="(key, value) in sampleTest | groupBy: '[city]'">
    <div ng-repeat="player in value">
       {{key}} {{ player.name }} 
    </div>
  </div>
</body>

</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您定义一个函数<div ng-repeat="(key, value) in sampleTest"> ... </div>来转换<div ng-repeat="(key, value) in merge(sampleTest)"> ... </div>对象,则可以执行merge而不是sampleTest

function merge(toMerge) {
  var merged = {};
  for (k in toMerge) {
    if (k in merged) {
        merged[k] += toMerge[k];
    } else {
        merged[k] = toMerge[k];
    }
  }
  return merged;
}