如何在数组上使用 ng-repeat 和过滤器属性
How do I use ng-repeat and filter properties over an array?
所以我的数据是这样的:
[
{
"userid": "a",
"age": 19,
"name": "john"
},
{
"userid": "b",
"age": 119,
"name": "joy"
},
{
"userid": "b",
"age": 119,
"name": "jesse"
}
]
我的阵列myarray:["a","b"]
ng-重复:
ng-repeat="objects in data
{{objects.age}}
如何使用 ng-filter,以便只有那些用户 ID 在 myarray 中的对象即只显示 A 和 B?
创建常规过滤器:
angular.module('App')
.filter("byPropertyInArray", function() {
return function(objects, propertyName, values) {
return objects.filter(function(object) {
return values.indexOf(object[propertyName]) !== -1;
});
}
});
然后在视图中使用它:
<div ng-repeat="object in data | byPropertyInArray:'userid':myarray">
{{object.age}}
</div>
假设该范围包含作为对象列表的data
,myarray
作为 id 列表。
由于您使用角度,因此可以使用过滤器执行相同的操作。
app.filter('myCustomFilter', function() {
return function(items) {
var arrayToReturn = [];
["a", "b"].forEach(function(id){
//find element with userid a or b
var f = items.find(function(d){return d.userid == id});
if(f){
//on find push that in the arrayToReturn
arrayToReturn.push(f);
}
});
return arrayToReturn;
};
});
现在在ng中使用您的过滤器,像这样重复
<li ng-repeat="friend in friends | myCustomFilter">
工作代码在这里
我建议使用它Array#reduce()
。
它将数组与结果一起保存,并查找结果集中是否有userid
。如果不是,则实际userid
被推送到结果。
var data = [{ userid: "a", age: 19, name: "john" }, { userid: "b", age: 119, name: "joy" }, { userid: "b", age: 119, name: "jesse" }],
filtered = data.reduce(function (r, a) {
~r.indexOf(a.userid) || r.push(a.userid);
return r;
}, []);
document.write('<pre>' + JSON.stringify(filtered, 0, 4) + '</pre>');
相关文章:
- ng repeat在ng repeat-过滤器不工作
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 应用像ng-repeat这样的过滤器,但没有ng-repeat
- ng-repeat中的Angular Js对象过滤器
- Angularjs ng-repeat过滤器在v1.0.1中工作,而不是v1.3.7
- 如何在 ng-repeat 过滤器中传递 HoDjango views.py 上下文数据变量
- 如何在数组上使用 ng-repeat 和过滤器属性
- AngularJS - 将ng-repeat划分为不同的过滤器或组
- 如何在 ng-repeat中更新过滤器功能
- AngularJS嵌套ng-repeat过滤器多个参数
- AngularJS:我可以使用过滤器在ng-repeat中对数组进行分块吗?
- AngularJS,ng-repeat+过滤器从控制器调用
- AngularJS对未格式化日期表达式的ng-repeat过滤器
- AngularJS的ng-repeat过滤器基于select选项
- React JS中的ng-repeat过滤器选项
- AngularJS的ng-repeat过滤器通过特定的ID从JSON
- 调整ng-repeat过滤器的大小
- JPA ng-repeat过滤器-多个id'
- AngularJS ng-repeat过滤器特定的嵌套属性
- Angular JS - 基于使用相同ng模型的多个对象属性的ng-repeat过滤器对象数组