在角度我有$scope中的两个列表.一个是包列表,第二个是适用于它们的标记列表.考虑例如:
$scope.packages = [ { name = "pkg1",tags = [ 1,3] },{ name = "pkg2",tags = [ 2,3] }] $scope.tags = [ { id = 1,name = "tag1" },{ id = 2,name = "tag2" },{ id = 3,name = "tag3" }]
<ul> <li ng-repeat = "pkg in packages"> {{pkg.name}} <ul> <li ng-repeat = "tag in tags | filter : intersect(pkg.tags)"> {{tag.name}} </li> </ul> </li> </ul>
解决方法
你可以在过滤器中使用.filter和.indexOf数组函数:
angular.module('myApp',[]).filter('intersect',function(){ return function(arr1,arr2){ return arr1.filter(function(n) { return arr2.indexOf(n) != -1 }); }; });
然后对于HTML,它看起来像这样:
<li ng-repeat="tag in tags | intersect: pkg.tags">