创建返回对象的自定义角度筛选器
Create custom Angular filter that returns an object
有没有办法创建一个返回对象的自定义角度过滤器函数?
我从文档中了解到过滤器:可以将对象作为表达式。例如,以下对象将仅具有名称为Neil Diamond的对象:
<div ng-repeat="item in collection | filter:{'name':'Neil Diamond'}">
我试图过滤一个动态对象。我创建了一个函数来构建对象并返回它,但这不起作用。这是实现我的目标的专有方法吗?
.HTML
<input type="checkbox" ng-click="includeAudience('Clinicians')" /> Clinicians
<br>
<input type="checkbox" ng-click="includeAudience('ElderlyVeterans')" /> ElderlyVeterans
<ul>
<li ng-repeat="resource in resources | filter:audienceFilter">
{{resource.name}}
</li>
</ul>
爪哇语
$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;
}
});
你可以在这里看到JSFiddle:http://jsfiddle.net/matthew_nahmias/5oqda19n/
这是因为您将函数作为原始对象提供。这意味着 angular 会将函数本身视为过滤器,而不是它的结果。你应该计算函数,像这样:
<li ng-repeat="resource in resources | filter:audienceFilter()">
{{resource.name}}
</li>
(我在audienceFilter
后添加了括号)。
这似乎至少在 jsfiddle 中有效。
相关文章:
- 如何使用URL筛选wordpress自定义帖子类型
- 数据表自定义筛选
- 类别自动完成jQuery中的单词级自定义筛选器,而不是子字符串
- 想要将ng个repeat对象传递给自定义筛选函数
- 自定义筛选器不'我不使用django数据表视图创建的ajax.data.Json
- 在模型可用之前调用使用 app.filter 的自定义筛选器
- 使用select2 3.5.2中的initSelection进行自定义筛选
- 范围中匹配日期值的自定义ng筛选器
- "键未定义”;在AngularJS'的自定义筛选功能
- Rally自定义应用程序复选框筛选器不工作
- 如何通过在 Fabric JS 中传递颜色代码来创建自定义筛选器
- Angular.js 中字符串特定部分的自定义筛选器表达式
- 创建返回对象的自定义角度筛选器
- 使用自定义按钮筛选结果
- 自定义筛选器排序方式
- 如何设置自定义对象属性以在 Angular 类型提前中进行筛选
- AngularJs:错误:用于配对项目的自定义筛选器引发错误:“达到 10 次 $digest() 迭代.流产!
- 将带有属性的自定义筛选器传递到角度中的自定义指令
- 如何在自定义筛选器中添加多个参数
- 将重复项传递给自定义筛选器