ng-repeat model.array [0] .otherArray

时间:2013-07-15 08:34:57

标签: angularjs

这个问题与我的另一个问题有关; angularjs-multi-level-tables-inside-another-if-clicked。 (你可以在那里看到“完整的”JSON。)

为什么我不能像下面那样进行ng-repeat?

<tbody>
<tr data-ng-repeat="dayData in storeDataModel.storedata[0].data">
  <td>{{dayData.date}}</td>
  <td>{{dayData.cost}}</td>
  <td>{{dayData.sales}}</td>
  <td>{{dayData.revenue}}</td>
  <td>{{dayData.employees}}</td>
  <td>{{dayData.employeeHoursSum}}</td>
</tr>
</tbody>

Angular查找数组“dayData”中此对象“store”的对象数(storedata [0]是第一个商店)但是由于某种原因它创建了n + 1行而不是n并且没有数据在全部在任何行中。

我也试过很多组合,试图让它发挥作用......:

  • storeDataModel.storedata.data - 完全没有行
  • storeDataModel.storedata。$ index.data - 完全没有行
  • storeDataModel.storedata。$ index + 1.data -returns errors
  • storeDataModel.storedata。$ first.data - 完全没有行
  

我正在尝试做什么,或者我是否需要编写指令来获取特定的商店dayData信息并为该特定商店放入临时模型然后对临时模型进行ng-repeat?

(另外,因为我试图将这个特定的表作为“假手风琴”的内容,即当点击父表中的一行来展开/折叠并显示这个特定的表(参见我的链接问题) - 是如果我将ng-clicked或own指令与你提出的解决方案一起包括在内,有任何不兼容性吗?)

1 个答案:

答案 0 :(得分:2)

在ng-repeat中,你必须迭代一个数组。在您的JSON中,“数据”是一个对象:

{
  "data": {
     ...
     "dayData" : [
       ...
     ]
   }
 }

所以,你必须迭代“dayData”:

<tbody>
<tr data-ng-repeat="dayData in storeDataModel.storedata[0].data.dayData">
  <td>{{dayData.date}}</td>
  <td>{{dayData.cost}}</td>
  <td>{{dayData.sales}}</td>
  <td>{{dayData.revenue}}</td>
  <td>{{dayData.employees}}</td>
  <td>{{dayData.employeeHoursSum}}</td>
</tr>
</tbody>

您可以在fiddle

上看到它