Angularjs 角群与滤波器
我正在尝试根据属性对集合进行分组,同时希望使用一个属性筛选集合 当我尝试以下方法时Angularjs 角群与滤波器,angularjs,angular-filters,Angularjs,Angular Filters,我正在尝试根据属性对集合进行分组,同时希望使用一个属性筛选集合 当我尝试以下方法时 <div data-ng-repeat="(group,parameter) in parameters | filter : { 'type' : '!GroupType' }| groupBy :'group'"> <fieldset> <legend>{{group}
<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>
我的收藏品里没有手表。正确的方法是什么。我建议您不要使用“groupBy”
$filter的实现,请使用:
angular.module(“sbrpr.filters”,[])
.filter('groupBy',函数(){
var结果={};
返回函数(数据、键){
如果(!(数据和键))返回;
var结果;
如果(!this.$id){
结果={};
}否则{
var scopeId=此。$id;
如果(!results[scopeId]){
结果[scopeId]={};
此.$on(“$destroy”,函数(){
删除结果[scopeId];
});
}
结果=结果[范围ID];
}
for(结果中的var groupKey)
结果[groupKey]。拼接(0,结果[groupKey]。长度);
对于(var i=0;我几乎肯定这个问题与“groupBy”过滤器的实现有关,你能分享一下代码吗?谢谢!我不是自己实现group by的,我在这里使用angular模块很抱歉,我花了这么长时间才回答你,请看一下我的答案,让我知道你的想法。Thanks!对我有用。谢谢你的链接,它清楚地解释了整个事情。
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations:
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;
};
});