我很难找到一种基于数字数组在ng-repeat中过滤一组结果的方法。这些数字可以代表我想看的结果,也可以不看。我能够在视图中使用过滤器并按一个数字过滤,这有效,但我想在那里放一个数组并按数组过滤。我不关心过滤器是在视图,控制器还是单独的过滤器中。
以下代码成功过滤了论坛ID为60
的主题 <div ng-repeat="topic in topics | filter:{forum_id:60}">
Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}}
</div>
我想按数组过滤
<div ng-repeat="topic in topics | filter:{forum_id:ARRAY_HERE}">
Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}}
</div>
答案 0 :(得分:1)
将您自己的功能传递给过滤器:
<div ng-repeat="topic in topics | filter:myFilterMethod(topic)">
Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}}
</div>
并在您的控制器中:
$scope.myFilterMethod = function() {
return function(e) {
return $scope.filterBy.includes(e.forum_id);
}
}
答案 1 :(得分:1)
此外,您可以使用ng-if
和indexOf
功能。
<div ng-repeat="topic in topics" ng-if="filterBy.indexOf(topic.forum_id) !== -1">
Forum ID: {{topic.forum_id}} Forum Name: {{topic.forum_title}}
</div>
答案 2 :(得分:1)
本地,angular中的filter属性不起作用,所以你需要自己定义一个手动过滤器。
你可以这样做answer
angular.module('myApp').filter('selectedArray', function() {
return function(array, tags) {
return array.filter(function(object) {
for (var i in object.XXX) {
if (array.indexOf(object.XXX[i]) != -1) {
return true;
}
}
return false;
});
};
});
然后您就可以使用它:
<ul>
<li ng-repeat="task in tasks | selectedArray:Array"></li>
</ul>
在此示例中,响应是一个对象数组,您需要将其定制到数组
希望它有所帮助。