使用自定义过滤器的ng-repeat不能按预期工作:未显示任何值

时间:2016-09-08 09:40:28

标签: angularjs arrays filter

我创建了这个自定义过滤器,它应该采用具有作业名称属性的对象数组,并返回一个具有作业的关联数组作为名称,以的形式共享作业。

angular.module('myApp')
    .filter('groupBy', function(){
        return function(input){
            if (!input || !input.length) { return; }
            var out = new Array();
            for (var crew of input){
                if(typeof out[crew.job] === 'undefined'){
                    out[crew.job] = new Array();
                }
                out[crew.job].push(crew.name);
            }           
            console.log(out);
            return out;
        }
    });

console.log的结果:

Assistant Director: ["P.J. Voeten"]

Director: ["George Miller"]

Script Supervisor: ["Sophie Fabbri-Jackson"]

Writer: ["Nick Lathouris", "George Miller", "Brendan McCarthy"]

然后我打算遍历数组并按如下方式打印:

<li ng-repeat="(key, value) in cast.crew | groupBy">
    <span class="bold">{{key}}:</span> 
    <span ng-repeat="name in value">{{name}}</span>
</li>

过滤器函数中的 console.log 显示数组是按预期创建的,但它不会出现在视图中,也不会显示错误消息。

1 个答案:

答案 0 :(得分:0)

由于@GabrieleCiech,我设法弄清楚了 - 问题是将过滤器函数中的out变量实例化为数组,然后尝试在视图中将其作为json对象访问。当我将var out = new Array();更改为var out = new Object();时,它开始按照有意的方式工作。