【问题标题】:ng-repeat using custom filter doesn't work as intended: no values shown使用自定义过滤器的 ng-repeat 无法按预期工作:未显示任何值
【发布时间】:2016-09-08 09:40:28
【问题描述】:

我创建了这个自定义过滤器,它应该采用具有 jobname 属性的对象数组并返回具有 job 的关联数组em> 作为一个和一个名称数组,它们作为共享一个工作。

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 显示数组是按预期创建的,但它没有出现在视图中,也没有显示错误消息。

【问题讨论】:

  • 如果您尝试在视图中添加 {{ cast.crew | json }} 输出是什么?
  • 我收到此错误(视图中没有更改):错误:[ngRepeat:dupes] 不允许在转发器中重复。使用“track by”表达式指定唯一键。中继器:cast.crew 中的 (key, value) | json,重复键:字符串:,重复值:errors.angularjs.org/1.5.0-beta.2/ngRepeat/dupes?p0 (...)
  • 将它添加到 for 循环上方的新行中,例如 {{ cast.crew | json }}
  • 对,对不起;它输出如下数组: [ { "credit_id": "53d451210e0a262841002dd1", "department": "Writing", "id": 1027146, "job": "Writer", "name": "Nick Lathouris", "profile_path “:空},{“credit_id”:“52fe4933c3a368484e11f76f”,“部门”:“导演”,“id”:20629,“工作”:“导演”,“姓名”:“乔治米勒”,“profile_path”:“ /smrCjoAwYyn91uBngUWHrak12MD.jpg" },(...) ]
  • 您收到的数据似乎是正确的。应用过滤器后的输出是什么?喜欢 {{ cast.crew |分组 | json}}?很奇怪。

标签: angularjs arrays filter


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多