简体   繁体   English

我如何解析ng-repeat中的数组(从函数)

[英]How I can parse an array (from function) inside ng-repeat

Here is my prg-ctrl.js : 这是我的prg-ctrl.js

$scope.getDataOfProject = function(project, year){

    var projectData = project.data[year];
    var smthData = [];

    for (var i = 1; i <= 12; i++) {

        if (projectData[i]) {
            smthData.push(projectData[i]);
        } else {
            smthData.push(0);
        }
    }

    return smthData;
};

here is snippet of a JSON: 这是JSON的代码段:

"projects": [
    {
    "id": 1,
        "data": {
            "2016": {
                "12": 18
            },
            "2017": {
                "1": 17.6,
                "2": 10.1,
                "3": 33.3,
                "4": 4.30
            }
        },
  .......

Then in prj.html file I have ng-repeat : 然后在prj.html文件中,我有ng-repeat

<div class="col-md-9">
    <div ng-repeat="entity in getDataOfProject(project, 2016)">{{entity}}</div>
</div>

but my <div class="col-md-9"> still empty. 但我的<div class="col-md-9">仍然为空。 But when I put smth like: 但是当我把这样的东西放进去时:

<div class="col-md-9">
    <div>{{getDataOfProject(project, 2016)}}</div>
</div>

I can see my data. 我可以看到我的数据。 What am I doing wrong? 我究竟做错了什么?

The problem is related to the fact that there might be duplicates in the array results, hence you may see a warning (or error) in the console. 该问题与以下事实有关:阵列结果中可能存在重复项,因此您可能会在控制台中看到警告(或错误)。 To avoid such, use track by : 为了避免这种情况,请使用track by

<div class="col-md-9">
    <div ng-repeat="entity in getDataOfProject(project, 2016) track by $index">{{entity}}</div>
</div>

Also, make sure you properly check whether keys exists in your original object: 另外,请确保正确检查原始对象中是否存在键:

$scope.getDataOfProject = function(project, year){
    if (typeof(project.data[year]) === "undefined") {
        return [];
    }
    var projectData = project.data[year];
    var smthData = [];

    for (var i = 1; i <= 12; i++) {

        if (projectData[i]) {
            smthData.push(projectData[i]);
        } else {
            smthData.push(0);
        }
    }

    return smthData;
    };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM