【发布时间】:2017-01-13 14:56:50
【问题描述】:
我正在尝试编写一个小过滤器来隐藏我的转发器元素。
假设我的范围是:
$scope.test = [
{id: 1,name: "Test number 1"},
{id: 2,name: "Test number 2"},
{id: 3,name: "Test number 3"},
{id: 4,name: "Test number 4"},
{id: 5,name: "Test number 5"},
{id: 6,name: "Test number 6"},
{id: 7,name: "Test number 7"},
{id: 8,name: "Test number 8"},
{id: 9,name: "Test number 9"},
{id: 10,name: "Test number 10"}
]
在我的中继器中,我正在做这样的事情:
<div ng-repeat="t in test| hide:[1,6]"></div>
我开始编写我的过滤器,但我卡住了。这是我目前所拥有的:
filter('hideIDs', function() {
newArray= [];
function(zone, IDS) {
var containsObject, newArray;
containsObject = function(obj, list) {
var i;
i = void 0;
i = 0;
while (i < list.length) {
if (list[i] === obj) {
return true;
}
i++;
}
return false;
};
angular.forEach(IDS, function(hide) {
return angular.forEach(test, function(t) {
if (t.id === hide) {
return
} else {
if (containsObject(t, newArray)) {
return
} else {
newArray.push(t);
}
}
});
});
return newArray;
};
});
我想用过滤器做的是:
检查t.id是否应该被隐藏,如果是,return不推送到newArray
我遇到的问题是:
在第一个循环中要隐藏的 ID 是 1,然后 6 被推送
在第二个循环中,要隐藏的 id 是 6,然后 1 被推送
无论如何,我最终都拥有它们。
建议?
你会以一种有效的角度方式实现这一目标吗?
非常感谢
【问题讨论】:
标签: angularjs angularjs-ng-repeat angularjs-filter angular-filters