Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建返回对象的自定义角度过滤器_Javascript_Angularjs_Object_Filter - Fatal编程技术网

Javascript 创建返回对象的自定义角度过滤器

Javascript 创建返回对象的自定义角度过滤器,javascript,angularjs,object,filter,Javascript,Angularjs,Object,Filter,有没有办法创建一个返回对象的 我从文档中了解到filter:可以将对象作为表达式。例如,以下将仅显示名为Neil Diamond的对象: <div ng-repeat="item in collection | filter:{'name':'Neil Diamond'}"> 您可以在这里看到JSFIDLE:,这是因为您将函数作为原始对象提供。这意味着angular将函数本身视为过滤器,而不是其结果。您应该评估函数,如下所示: <li ng-repeat="resource

有没有办法创建一个返回对象的

我从文档中了解到filter:可以将对象作为表达式。例如,以下将仅显示名为Neil Diamond的对象:

<div ng-repeat="item in collection | filter:{'name':'Neil Diamond'}">

您可以在这里看到JSFIDLE:

,这是因为您将函数作为原始对象提供。这意味着angular将函数本身视为过滤器,而不是其结果。您应该评估函数,如下所示:

<li ng-repeat="resource in resources | filter:audienceFilter()">
  {{resource.name}}
</li>
  • {{resource.name}
  • (我在
    audienceFilter
    之后添加了括号)

    这似乎至少在JSFIDLE中起作用

      $scope.resources = [{
        'name': 'Resource 1',
        'ElderlyVeterans': false,
        'Clinicians': true
      }, {
        'name': 'Resource 2',
        'ElderlyVeterans': true,
        'Clinicians': false
      }];
    
      $scope.audienceIncludes = [];
    
      $scope.includeAudience = function(resource) {
        var i = $.inArray(colour, $scope.audienceIncludes);
        if (i > -1) {
          $scope.audienceIncludes.splice(i, 1);
        } else {
          $scope.audienceIncludes.push(resource);
        }
      }
    
      $scope.audienceFilter = function(resource) {
        if ($scope.audienceIncludes.length > 0) {
          $scope.audiencesShown = {};
          angular.forEach($scope.audienceIncludes, function(audience) {
            $scope.audiencesShown[audience] = true;
          });
          return $scope.audiencesShown;
        }
        return resource;
      }
    });
    
    <li ng-repeat="resource in resources | filter:audienceFilter()">
      {{resource.name}}
    </li>