首页 > 解决方案 > angularjs ng-repeat 使用索引而不是名称

问题描述

我使用 ng-repat 用数组填充 html 表。

我在规范化数组中每个属性的命名时遇到问题。

有些用户非常固执,如果可能的话,现在我必须找到一个快速的解决方法。

我的数组 AgendaItems 有时像:

{"Agenda Item":"1","Legistar ID":"62236","Title":"Approval of Minutes","Meeting ID":"49837"}

其他时间是这样的:

{"AgendaItem":"1","LegistarID":"62236","Title":"Approval of Minutes","MeetingID":"49837"}

的HTML:

                    <tbody ng-repeat="ai in AgendaItems">   
                        <tr>
                            <td>{{ai.MeetingID}}</td>
                            <td>{{ai.AgendaItem}}</td>
                            <td>{{ai.LegistarID}}</td>
                            <td>{{ai.Title}}</td>
                        </tr>
                    </tbody>

有没有一种方法可以使用索引值来代替,例如: ai.[i] 这样我就不必担心列的名称之间是否有空格?

任何帮助深表感谢。

谢谢你,伊拉斯莫

标签: javascriptarraysangularjs

解决方案


您可以隐式访问指令自动提供的ng-repeat范围属性。$index

但是,$index在迭代对象而不是数组时使用是相当有问题的。

您似乎追求的是一种迭代对象的键和值的方法,这是毫无疑问的,实际上也ng-repeat通过"(key, value) in object"语法支持。名称keyvalue是任意的。

这是如何写的:

首先,对于单个agendaItem,ai

<div>
  <div ng-repeat="(key, value) in ai">{{key}}: {{value}}</div>
</div>

其次,在问题的背景下

<tbody ng-repeat="ai in AgendaItems">
  <tr>
    <td ng-repeat="(key, value) in ai">{{value}}</td>
  </tr>
</tody>

推荐阅读