在AngularJS中使用ng-repeat显示一对对象的值

时间:2017-12-15 11:12:04

标签: javascript arrays angularjs

我有一个对象数组,如下所示:

myCtrl.siteNameLabels = myCtrl.actual.map(function (value, index) {
    return {
        actualSite: {
            actualSiteName : value,
            actualSiteData:  myCtrl.tableData[index]
        },
        pastSite: {
            pastSiteName : myCtrl.pastSiteNameLabels[index] + "_past",
            pastSiteData : myCtrl.tableDataPast[index]
        }
    }
})

有一对相同的网站(现在,过去),每个网站的名称都是相同的(过去有"过去"最后用于识别),以及要显示的数据在屏幕上(这是一个数值值数组)。

每个网站都有现有数据,但有些网站没有过去的数据。

我必须将所有这些数据放在表头中,如下所示:

Site1 | Site1_past | Site2 | Site3 | Site3_past | Site4

如果我只有现有网站,那么使用ng-repeat放置数据非常容易。问题是我还有可选的过去网站,必须与他们现有的网站配对。

这是我为现有网站生成的代码:

<thead>
    <tr>    
        <th ng-repeat="label in $ctrl.siteNameLabels">{{label.actual.actualSiteName}}</th>
    </tr>
</thead>
<tbody>
    <tr ng-repeat="rows in $ctrl.tableData[0] track by $index">
        <td>{{$ctrl.dateLabels[$index]}}</td>
        <td ng-repeat="label in $ctrl.actualSiteNameLabels">{{$ctrl.tableData[$index][$parent.$index]}}</td>
    </tr>
</tbody>

它显示如下:

Site1 |  Site2 | Site3 | Site4

任何想法如何让它像这样?

Site1 | Site1_past | Site2 | Site3 | Site3_past | Site4

2 个答案:

答案 0 :(得分:0)

尝试使用此方法存储网站价值

    site: {
        actualSiteName : value,
        actualSiteData:  myCtrl.tableData[index]
        pastSiteName : myCtrl.pastSiteNameLabels[index] + "_past",
        pastSiteData : myCtrl.tableDataPast[index]
    }

希望它不会影响其他功能...

答案 1 :(得分:0)

&#13;
&#13;
var labelList = [{ actualName: "Site1", pastName: "Site1_past" },
                 { actualName: "Site2" },
                 { actualName: "Site3", pastName: "Site3_past" },
                 { actualName: "Site4" },
                ];

var flatList = [];
labelList.forEach(function(item) {
    flatList.push(item.actualName);
    if (item.pastName) {
        flatList.push(item.pastName);
    };
});
console.log(flatList);   
&#13;
&#13;
&#13;