我正在尝试根据字符串数组创建自定义角度过滤器,例如:
$scope.idArray = ['1195986','1195987','1195988']
我要过滤的数据格式为:
$scope.data = {
"moduleName": null,
"contentholder_0": {
"moduleName": "contentholder",
"id": "-1",
"name": "",
"content": ""
},
"webapps_1": {
"moduleName": "webapps",
"items": [{
"itemid": "1195986",
"name": "abc"
},{
"itemid": "1195987",
"name": "def"
},{
"itemid": "1195988",
"name": "ghi"
}]
}
}
我查看了此Stack Question以尝试创建自定义过滤器: Example
以下是答案的JSFiddle
我无法破解它以适应我想要做的事情的数据结构(过滤"项目"如果" itemid"在" idArray&#34)
这是一个JSfiddle尽可能接近我没有崩溃的角度。
如果这是一个非常简单的问题,请原谅我,但我是一个初学者,并尝试了多种方法让这个工作,但天堂已经能够。我不确定实际过滤的位置以及如何将idArray中的字符串与data.webapps_1.items.itemid进行比较
非常感谢任何帮助。
答案 0 :(得分:1)
我相信这就是你要做的事情。这个过滤器现在检查是否有任何项目与ID数组中的任何项目具有相同的ID。
.filter('selectedTags', function () {
return function (items, tags) {
var filtered = [];
angular.forEach(items, function (item) {
angular.forEach(tags, function (tag) {
if (item.itemid == tag) {
filtered.push(item);
}
});
});
return filtered;
};
})
请参阅此Fiddle
答案 1 :(得分:0)
我不确定这是否对您有所帮助,但我喜欢使用underscore.js来操纵我的JS对象/数组,并且有一个功能就是这样:
_.pluck(data.webapps_1.items, 'itemid');
啃削
_。pluck(list,propertyName) 可能是map最常见的用例的便捷版本:提取属性值列表。
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}]; _.pluck(stooges, 'name'); => ["moe", "larry", "curly"]
根据我对您的问题的理解,这将从idArray
data
然后您可以创建一个调用此代码的自定义过滤器:)