我正在尝试根据属性对我的集合进行分组,同时我想用一个属性过滤我的集合。
当我尝试以下内容时,
<div data-ng-repeat="(group,parameter) in parameters | filter : { 'type' : '!GroupType' }| groupBy :'group'">
<fieldset>
<legend>{{group}}</legend>
<div data-ng-repeat="par in parameter">
<myfield ng-model="par.value" parameter="par" entry-map="entryMap"></myfield>
</div>
</fieldset>
</div>
我在控制台上遇到了很多错误,如下所示,
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations:
我的收藏品上没有任何手表。这样做的正确方法是什么。
答案 0 :(得分:2)
我建议你不要使用&#39; groupBy&#39; $filter
,使用this one instead:
angular.module("sbrpr.filters", [])
.filter('groupBy', function () {
var results={};
return function (data, key) {
if (!(data && key)) return;
var result;
if(!this.$id){
result={};
}else{
var scopeId = this.$id;
if(!results[scopeId]){
results[scopeId]={};
this.$on("$destroy", function() {
delete results[scopeId];
});
}
result = results[scopeId];
}
for(var groupKey in result)
result[groupKey].splice(0,result[groupKey].length);
for (var i=0; i<data.length; i++) {
if (!result[data[i][key]])
result[data[i][key]]=[];
result[data[i][key]].push(data[i]);
}
var keys = Object.keys(result);
for(var k=0; k<keys.length; k++){
if(result[keys[k]].length===0)
delete result[keys[k]];
}
return result;
};
});
另外,have a look at this post,在那里我讨论为什么你使用的实现实际上非常糟糕。
最后,请support my answer here。谢谢!