Angularjs 基于外部ng repeat中的值筛选内部ng repeat

Angularjs 基于外部ng repeat中的值筛选内部ng repeat,angularjs,Angularjs,在下面的代码中,我想显示不同的标记,然后对于每个标记,我想过滤内部ng repeat中的值。这可能吗?或者我必须创建一个不同标签的单独数组吗 <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/1.2.9/angular.min.js"></script> <script src="http://code.ang

在下面的代码中,我想显示不同的标记,然后对于每个标记,我想过滤内部ng repeat中的值。这可能吗?或者我必须创建一个不同标签的单独数组吗

<!doctype html>
<html ng-app>
  <head>
    <script src="http://code.angularjs.org/1.2.9/angular.min.js"></script>
    <script src="http://code.angularjs.org/1.2.9/angular-animate.min.js"></script>
  </head>
  <body>
    <div ng-init="servers = [
      {name:'UK001', os:'win 2008', tag:'prod'},
      {name:'UK002', os:'win 2008', tag:'prod'},
      {name:'UK003', os:'win 2003', tag:'Dev'},
      {name:'UK004', os:'win 2008', tag:'Dev'}
    ]">

        <div  ng-repeat="server in servers ">
            <h1> {{tag}}</h1>
           <ul >
                <li ng-repeat="server in servers | filter : {tag :server.tag } ">
                    <h3>{{server.name}} {{server.os}} </h3>
                </li>
              </ul>
        </div>   
    </div>
  </body>
</html>

{{tag}}
  • {{server.name}{{server.os}
这是一个插销:

您应该创建标记对象,如下所示: 现在,您可以像这样迭代该对象:
使用此方法,所有内容都将重复多次。我希望将服务器分组到标记下。我想我必须创建一个单独的标签数组作为我的外循环。谢谢Ilan,我无法看到Plunker链接,我想我需要一个帐户。
var servers = [
    {name:'UK001', os:'win 2008', tag:'prod'},
    {name:'UK002', os:'win 2008', tag:'prod'},
    {name:'UK003', os:'win 2003', tag:'Dev'},
    {name:'UK004', os:'win 2008', tag:'Dev'}
];

$scope.tags = servers.reduce(function(tags,server){

  var tag = server.tag;

  if(! tags[tag] ) tags[tag] = [];

  delete server.tag; // we don't need it anymore

  tags[tag].push(server);

  return tags;
},{});
<div ng-repeat="(tag, servers) in tags ">
  <h1> {{tag}}</h1>
    <li ng-repeat="server in servers">
        <h3>{{server.name}} {{server.os}} </h3>
    </li>      
</div>
{
  "prod": [
    {
      "name": "UK001",
      "os": "win 2008"
    },
    {
      "name": "UK002",
      "os": "win 2008"
    }
  ],
  "Dev": [
    {
      "name": "UK003",
      "os": "win 2003"
    },
    {
      "name": "UK004",
      "os": "win 2008"
    }
  ]
}