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

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

这是我的 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;
};

这里是 JSON 的片段:

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

然后在 prj.html 文件中我有 ng-repeat:

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

但我的 <div class="col-md-9"> 仍然是空的。但是当我把 smth 放在:

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

我可以看到我的数据。我做错了什么?

问题与数组结果中可能存在重复项有关,因此您可能会在控制台中看到警告(或错误)。为避免这种情况,请使用 track by:

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

此外,请确保正确检查原始对象中是否存在键:

$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;
    };