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;
    };
});