Angularjs ng使用自定义过滤器重复不';t按预期工作:未显示任何值
我创建了这个自定义过滤器,它应该接受一个具有job和name属性的对象数组,并返回一个关联数组,该数组将job作为键,以及一个名称数组,该数组将job作为值共享Angularjs ng使用自定义过滤器重复不';t按预期工作:未显示任何值,angularjs,arrays,filter,Angularjs,Arrays,Filter,我创建了这个自定义过滤器,它应该接受一个具有job和name属性的对象数组,并返回一个关联数组,该数组将job作为键,以及一个名称数组,该数组将job作为值共享 angular.module('myApp') .filter('groupBy', function(){ return function(input){ if (!input || !input.length) { return; } var out = new
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>
{{key}}:
{{name}}
filter函数中的console.log显示数组是按预期创建的,但它不会显示在视图中,也不会显示错误消息 多亏了@GabrieleCiech,我才设法解决了这个问题——问题是将filter函数中的
out
变量实例化为数组,然后尝试在视图中作为json对象访问它。当我更改var out=new Array()时代码>到var out=new Object()
它开始以inted方式工作。多亏了@GabrieleCiech,我才设法解决了这个问题-问题是将filter函数中的out
变量实例化为数组,然后尝试在视图中作为json对象访问它。当我更改var out=new Array()时代码>到var out=new Object()代码>它开始以inteded方式工作。如果尝试在视图{{cast.crew | json}中添加输出是什么?我收到了此错误(视图中没有更改):错误:[ngRepeat:dupes]中继器中不允许重复。使用“跟踪依据”表达式指定唯一关键点。Repeater:(key,value)在cast.crew | json中,重复key:string:,重复value:(…)将其添加到for循环上方的新行中,如{{cast.crew | json}}对,对不起;它输出如下数组:[{“credit_id”:“53d451210e0a262841002dd1”,“department”:“Writing”,“id”:1027146,“job”:“Writer”,“name”:“Nick Lathouris”,“profile_path”:null},{“credit_id”:“52fe4933c3a36844e11f76f”,“department”:“Directing”,“id”:20629,“job”:“Director”,“name”:“George Miller”,“profile_path”:“/smrCjoAwYyn91uBngUWHrak12MD.jpg”},(…)]您收到的数据似乎是正确的。应用过滤器后的输出是什么?例如{cast.crew | groupBy | json}?这很奇怪。如果您试图在视图{cast.crew | json}中添加什么输出?我得到了这个错误(视图中没有更改):错误:[ngRepeat:dupes]中继器中不允许重复。请使用“track by”表达式指定唯一的键。中继器:(键,值)在cast.crew|json中,重复键:string:,重复值:(…)将其添加到for循环上方的新行中,如{cast.crew|json}对,抱歉;它输出如下数组:[{“credit u id”:“53d451210e0a262841002dd1”部门“:”写作“,”id“:”1027146,“职务“:”作者“,”姓名“:”尼克·拉图里斯“,”个人资料“:”空“,”信用证“:”52fe4933c3a368484e11f76f“,”部门“,”导演“,”id“:”20629,“职务“:”导演“,”姓名“:”乔治·米勒“,”个人资料“:”/smrCjoAwYyn91uBngUWHrak12MD.jpg“,”,(…)]您收到的数据似乎是正确的。应用过滤器后的输出是什么?比如{{cast.crew | groupBy | json}?这很奇怪。