【问题标题】:Angular filter by array that contains search criteria按包含搜索条件的数组进行角度过滤
【发布时间】:2015-07-27 20:51:06
【问题描述】:

内置的Angular“过滤器”是否支持过滤数组,因为“过滤器包含数组”

如下:

$scope.currentFilter = "Allentown";

$scope.users = [{
   name: "user1", 
   locations: [
      { name: "New York", ... },
      { name: "Allentown", ... },
      { name: "Anderson", ... },
   ]

}, ... ];

<div ng-repeat="user in users | filter : { locations: { name: currentFilter } }"></div>

换句话说,我希望仅筛选具有“位置”数组的用户,该数组包含与名称匹配的字符串的位置。

如果没有,我如何使用自定义过滤器来完成此操作?

【问题讨论】:

标签: angularjs angular-filters


【解决方案1】:

您的代码 sn-p 从Angular 1.2.13 开始就可以正常工作。如果您使用的是旧版本(在 1.0.1 上测试)并且不需要跨控制器重用过滤例程(在这种情况下您应该声明适当的过滤器),您可以传递内置的 filter谓词函数:

<div ng-repeat="user in users | filter : hasLocation">{{user.name}}</div>

然后写这样的东西:

$scope.currentFilter = "Allentown";

$scope.hasLocation = function(value, index, array) {
    return value.locations.some(function(location) {
       return location.name == $scope.currentFilter;
    });
}

小提琴here.

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多