'ng-repeat' 如何获取“唯一”值

'ng-repeat' How to get the `unique` values

使用数组,我试图过滤并显示列表中的 unique 信息。为此,我使用 angular inbuild filter 方法。

但是我遇到了错误。

这是我的尝试(我正在过滤 SubProjectName

<ul>
    <li ng-repeat="project in projectNames | unique: 'SubProjectName' ">
        {project.SubProjectName}}
    </li>
</ul>

Live Demo

您尝试使用的 unique 过滤器可能来自 AngularUI,因此您需要包含它:

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.js"></script>

并将其添加为模块依赖项:

var app = angular.module('plunker', ['ui.filters']);
默认情况下,

AngularJS 不包含 unique 过滤器。您可以使用 angular-filter 中的那个。只需包括 JavaScript

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.8/angular-filter.min.js"></script>

并在您的应用中包含依赖项:

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

您的代码应该可以立即运行!我编辑了你的 Plunker 所以它有效。

我已将您的 plunkr 更新为 http://plnkr.co/edit/sx3u1ukH9752oR1Jfx6R?p=preview 添加过滤器依赖项

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

希望对您有所帮助

我想你正在寻找这样的答案

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

app.controller('MainCtrl', function($scope) {
  $scope.projectNames=projects
  $scope.Id = "1";
  $scope.SubProjectName="Retail Building";

})
.filter('unique', function() {
  return function(projects, subProjectName) {
    var newprojects =[];
    projects.forEach(function(project){
      if(project.SubProjectName === subProjectName)
        newprojects.push(project);
    });
    return newprojects;
  };
});

<li ng-repeat="project in projectNames | unique:SubProjectName">{{project.SubProjectName}}</li>

Demo