Próbuję dynamicznie wyświetlać jeden z kilku szablonów w dyrektywie ng-repeat, na podstawie bieżącego elementu.Dynamicznie wyświetlając szablon w dyrektywie ng-repeat w AngularJS?
Moje dane JSON wygląda następująco:
data: {
groups: [
{
name: "Group 1",
sections: [
{ name: "Section A" },
{ name: "Section B" }
]
},
{
name: "Group 2",
sections: [
{ name: "Section A" },
{ name: "Section B" }
]
}
]
}
Moim celem jest uczynienie drzewo danych dynamicznie, przy czym każda grupa zawiera wiele sekcji. Grupy będą miały ten sam szablon, ale każda sekcja powinna mieć własny szablon oparty na polu nazwy.
Zakładając najwyższym poziomie HTML jest:
<div ng-repeat="group in groups">
{{ group.name }}
<div ng-repeat="section in sections">
<!-- Dynamic section template used -->
</div>
</div>
Idealnie, każdy odcinek będzie również mieć swoje własne dane i lunetą kontroler z nim związane. Mam szczęście budowania tego typu systemu z Knockout, ale staram się zrozumieć Angularny sposób robienia rzeczy.
Brzmi jak dobry przypadek dla dyrektywy. – lucuma
Lucuma, czy mógłbyś skomentować więcej? Myślałem także o używaniu dyrektyw, ale nie jestem pewien idealnego poziomu szczegółowości. Czy powinienem zbudować dyrektywę, która dokonuje selekcji szablonów, czy też każda "sekcja" powinna mieć własną dyrektywę? –
Myślę, że to zależy od tego, jak chcesz to zrobić. Możesz stworzyć jedną dyrektywę, aby wykonać to wszystko (przekazać w tablicy grup) i/lub możesz stworzyć kolejną dyrektywę, która jest wywoływana wewnątrz twojej dyrektywy grupowej, aby obsługiwać sekcje. Korzyścią dyrektywy jest to, że mają swój własny zakres. Podam mały przykład. – lucuma