当对象的某些字段丢失时如何使用 ng-repeat

how to use ng-repeat when some fields of the object are missing

我正在对象上使用 Angular JS 的 ng-repeat。我的代码就像

<thead>
     <tr>
        <th style="text-transform: capitalize;">{{monthOrquarter || "month"}}
        </th>
        <th ng-repeat="tech in dashboardSrv.portfolioTech">{{tech}}
        </th>
      </tr>
</thead>
<tbody>
     <tr ng-repeat="(month, data) in dashboardSrv.portfolio[monthOrquarter || 'month']">
       <td class="rt-td1" style="border-bottom: 1px solid white !important; border-top: 2px;">{{month}}
       </td>
       <td class="rt-td1" style="border-bottom: 1px solid white !important; border-top: 2px;" ng-repeat="(tech, percentage) in data" ng-show="data.tech != 'total'">{{percentage  | number: 2}}%
       </td>
     </tr>
 </tbody>

现在 dashboard.portfoliotech 看起来像, dashboard.portfolioTech = { 'Contact Center EA', 'Contact Center HCS','Contact Center Other','Remote Expert'}

但是,dashboard.portfolio 是一个看起来像

dashboardSrvvar s=this 但是在 UI 中,我想为每个月/季度显示这些(在每种技术下,对应的技术)。百分比值计算正确。月/季度显示正确。但是,数据显示不正确(有时 % 使用错误的技术)。我的 UI 看起来像,

如何解决?

在你最后一次重复

ng-repeat="(tech, percentage) in data"

我建议改为重复 portfolioTech。

ng-repeat="tech in dashboardSrv.portfolioTech"

并在您后面的绑定中放置

{{data[tech] | number: 2}}%

简而言之:

这一行:

<td class="rt-td1" style="border-bottom: 1px solid white !important; border-top: 2px;" ng-repeat="(tech, percentage) in data" ng-show="data.tech != 'total'">{{percentage  | number: 2}}%
   </td>

变成这条线:

<td class="rt-td1" style="border-bottom: 1px solid white !important; border-top: 2px;" ng-repeat="tech in dashboardSrv.portfolioTech" ng-show="data.tech != 'total'">{{data[tech]  | number: 2}}%
   </td>