Comment gérer récursive rendu de données à l'aide d'AngularJS
J'ai une application qui a un ensemble de données qui ont une relation récursive (un arbre, en utilisant la récursivité.) J'ai essayé plusieurs façons de mettre en œuvre cette via Angulaire, aucun de qui semblent rendre viable résultat.
L'idée ici est que je veux avoir ces données rendu à l'aide d'un ensemble de listes imbriquées, ce qui permet pour de nombreux (7+), les niveaux de profondeur. Pour simplifier les choses (mon application utilise Restangular) j'ai construit le suivant plunker:
http://plnkr.co/edit/dKT9OvpsMgnxmLwgF0ij
Tandis que le "haut" niveau de données s'affiche correctement (juste le premier titre), ma tentative de répéter utilisant des contrôleurs semble échouer lamentablement. L'idée ici est que chaque "enfant" dans l'arbre est rendu à l'aide de son propre contrôleur, qui peut alors rendre les enfants, et ainsi de suite et ainsi de suite. Je me rends compte que imbriqués les contrôleurs pourrait ne pas être la "meilleure" façon d'aller, mais après beaucoup de recherches je n'ai pas trouvé une "meilleure" solution de rechange.
Il est important que la solution préserve le concept de "nidification" ici (chaque élément apparaissant en dessous de son élément parent, avec un léger retrait.)
OriginalL'auteur chander | 2013-08-24
Vous devez vous connecter pour publier un commentaire.
plutôt que nest vos contrôleurs, nest les données et avoir un contrôleur.
la vue est gérée par un modèle qui fait référence à lui-même de manière récursive.
comme chadermani a liés à, il ya quelques réponses.
ici est un violon avec un excellent exemple (pas mon code)
http://jsfiddle.net/brendanowen/uXbn6/8/
et le code de la tripoter
fonctionne pour moi avec la dernière version stable angulaire jsfiddle.net/uXbn6/388
Merci. J'ai rétrogradé en plus tôt unstable et il fonctionne. On dirait qu'il est cassé dans Angulaire 1.2
Cela était dû à un bug dans la version release candidate. La mise à niveau vers une version plus récente de RC ou 1.2 si elle a été effectivement libéré.
une optimisation est d'utiliser
ng-if
pour empêcher la création deng-repeat
pour "feuille" nœuds comme je l'ai fait ici.. mis à jour jsfiddle qui montre ce que je veux direOriginalL'auteur Anton
Si vous êtes familiarisé avec le batarang de l'outil, il a un treeview des étendues. Vous pouvez voir le code source ici:
https://github.com/angular/angularjs-batarang/blob/master/js/directives/scopeTree.js
L'idée est simple. À l'aide de $compiler récursive de rendre cette directive pour tous les enfants, il trouve jusqu'à ce qu'il n'y a pas plus d'enfants à rendre.
J'ai vu que la même idée pour d'autres alternatives, prendre un coup d'oeil ici:
Est-il possible de faire une Arborescence Angulaire?
OriginalL'auteur Jesus Rodriguez
Essayez ceci pour un bien propre exemple
http://codrspace.com/build80/create-recursive-tree-structure-using-template-in-angularjs/
OriginalL'auteur Pankaj Bodani