【发布时间】:2015-03-31 17:49:48
【问题描述】:
出于各种原因,我使用 Angular 过滤器添加到将由 ng-repeat 使用的项目列表(基本上我需要将某些项目分组到表格的子标题下)。
app.filter('tableFilter',
function(){
return function(items){
if (!items){
return;
}
var transformed = [];
for (var i = 0; i < items.length; i++){
if (items[i].classid){
if (i === 0 || items[i].classid !== items[i-1].classid){
transformed.push({classheader : true});
}
else{
items[i].classheader = false;
}
}
transformed.push(items[i]);
}
return transformed;
}
}
);
好消息是它有效。坏消息是它会产生错误,第一个是:
[$rootScope:infdig]
http://errors.angularjs.org/1.2.23/$rootScope/infdig?p0=10&p1=%5B%5B%22fn%3…%7C%20''%3B%20newVal%3A%20%5C% 22%5C%22%3B%20oldVal%3A%20undefined%22%5D%5D
这与摘要循环中的无限循环有关。我怀疑通过添加到项目列表中,我正在破坏ng-repeat 使用的数组/$index。
我可以在控制器/服务中转换项目列表,但这似乎不正确,因为这基本上只是为了演示。
【问题讨论】:
-
您是通过
$filter提供程序调用控制器或服务内部的过滤器吗?或者在视图中使用它作为表达式?我认为后者是 ng-repeat 提到的情况 - 但不能确定。 -
@cerd 不,这是在 ng-repeat 中,基本上我想动态地向表中添加行。
标签: javascript angularjs