我创建了这个自定义过滤器,它应该采用具有作业和名称属性的对象数组,并返回一个具有作业的关联数组作为键和名称,以值的形式共享作业。
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 显示数组是按预期创建的,但它不会出现在视图中,也不会显示错误消息。
答案 0 :(得分:0)
由于@GabrieleCiech,我设法弄清楚了 - 问题是将过滤器函数中的out
变量实例化为数组,然后尝试在视图中将其作为json对象访问。当我将var out = new Array();
更改为var out = new Object();
时,它开始按照有意的方式工作。