Javascript 创建返回对象的自定义角度过滤器
有没有办法创建一个返回对象的 我从文档中了解到filter:可以将对象作为表达式。例如,以下将仅显示名为Neil Diamond的对象: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
<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>