AngularJS :quelle est la relation entre une portée d'isolement et une portée de transclusion pour une collection de la même directive

StackOverflow https://stackoverflow.com//questions/21007903

Question

Une petite question à propos de $$nextSibling.J'ai vu beaucoup d'articles similaires à ce celui qui dit que la relation entre une directive avec une portée d'isolation et une portée de transclusion se fait via $$nextSibling.Cela semble être correct s'il n'y a qu'une seule instance de la directive.Cependant, j'ai une directive de collection qui contient des éléments qui sont également des directives, par exemple.

<items><item id="1"/><item id="2"/></items>

et cela crée 4 portées frères mais dans cet ordre :l'élément 1 isoler, l'élément 2 isoler, l'élément 1 transclure, l'élément 2 transclure.Dans ce cas, vous avez besoin de $$nextSibling.$$nextSibling, ce qui est très insatisfaisant.

Existe-t-il un moyen plus propre de faire référence entre les étendues d'isolation et de transclusion ?

J'essaie de créer des contrôles autonomes qui « émettent » des messages devant être reçus par la première directive parent qui écoute ce message.Je constate que les messages sont reçus par la portée transclude du parent et non par la portée isolate (ce que je comprends et qui convient).Le problème survient parce que le « modèle » de mes contrôles parents se trouve sur la portée d'isolement, donc prendre des mesures après avoir reçu le message signifie une interaction entre la portée de transclusion et la portée d'isolement - normalement via $$nextSibling.Cependant, comme décrit ci-dessus, cela n’est pas prévisible une fois que vous commencez à avoir des collections.

Merci.

Était-ce utile?

La solution

La réponse à cette question dépend de la version.J'utilisais la v1.2.0 d'angular.Dans cette version, les portées frères et sœurs ne sont pas correctement ordonnées, de sorte que $$nextSibling n'est PAS fiable.Après l'installation de la version 1.2.7, ce problème est désormais corrigé et les étendues sœurs sont répertoriées dans le bon ordre, la portée de transclusion suivant toujours la portée d'isolation.

D'après une première lecture du journal des modifications de version, il n'est pas immédiatement évident quel correctif a résolu ce problème, donc je ne suis pas sûr quelle est la première version d'Angular qui résout ce problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top