私はややアンギュラーに慣れていないので、jsonとng-repeatに問題があります。 「モジュール」のリストがあり、その中に「週」のリストがあります。
{
"modules":
{
"module1":
{
"title":"name of module1",
"description":"description of module1",
"weeks":{"week1":{"title":"Week 01"}
},
"module2":
{
"title":"name of module2",
"description":"description of module2",
"weeks":{"week2":{"title":"Week 02"},"week3":{"title":"Week 03"}
}
}
}
私の最終的な出力は表であり、モジュールを繰り返すことができますが、何週間もループすることで私が間違っていることを理解するのに苦労しています。これが私のテンプレートです:
<table class="table table-bordered" ng-repeat="module in ocw.modules">
<tr>
<td>
<h3 class="moduletitle">{{ module.title }}</h3>
<h4>Description</h4>
<p>{{ module.description }}</p>
</td>
</tr>
<tr ng-repeat="week in ocw.modules.weeks">
<td>
{{ week.title }}
</td>
</tr>
</table>
そのため、適切なタイトルと説明を含む2つのテーブルが出力されますが、週が正しく表示されないようです。一部の「モジュール」には、「週」が複数あることに注意してください。エラーがテンプレートまたはjsonにあるかどうかはよくわかりません。
助けてくれてありがとう。 S
モジュールと週がオブジェクトの配列になるように、データ構造を変更します。
デモ: http://plnkr.co/edit/e41n9vAMMLf0WWIUQ8HO?p=preview
jSONデータ:
{
"modules":
[
{
"title":"name of module1",
"description":"description of module1",
"weeks":[{"id":1, "title":"Week 01"}]
},
{
"title":"name of module2",
"description":"description of module2",
"weeks":[{"id":2, "title":"Week 02"},{"id":3,"title":"Week 03"}]
}
]
}
そして、マークアップは次のようになります。
<table class="table table-bordered" ng-repeat="module in ocw.modules">
<tr>
<td>
<h3 class="moduletitle">{{ module.title }}</h3>
<h4>Description</h4>
<p>{{ module.description }}</p>
</td>
</tr>
<tr ng-repeat="week in module.weeks">
<td>
{{ week.title }}
</td>
</tr>
</table>
この場合はmodule
である各モジュールを繰り返して週を取得しているので、module.weeks
はmodule.title
とほぼ同じです。あなたの例では、反復の内部にあり、json構造と一致しないocw.modules.weeks
を参照しようとしています。
変化する
<tr ng-repeat="week in ocw.modules.weeks">
に
<tr ng-repeat="week in module.weeks">
スコープにモジュールがあり、そのモジュールの数週間後だからです。
完全を期すために、テーブルに何らかのスタイルとthead
がある場合、このngRepeat
は複数のテーブルを作成します。
これを回避するには、最初のng-repeat
tbody
要素内:
<table class="table table-bordered">
<tbody ng-repeat="module in ocw.modules">
<tr>
<td>
<h3 class="moduletitle">{{ module.title }}</h3>
<h4>Description</h4>
<p>{{ module.description }}</p>
</td>
</tr>
<tr ng-repeat="week in module.weeks">
<td>{{ week.title }}</td>
</tr>
</tbody>
</table>