Je suis à la recherche d'une quelconque façon de l'accès au "parent" portée à l'intérieur d'une directive. Toute combinaison de portée, transclude, exiger, en passant dans des variables (ou le champ d'application elle-même) à partir de ci-dessus, etc. Je suis totalement prêt à se plier en quatre, mais je veux éviter de quelque chose de totalement hacky ou difficile à maintenir. Par exemple, je sais que je pourrais le faire dès maintenant en prenant l' $scope
de la preLink paramètres et d'itération sur ses $sibling
des étendues de trouver les concepts de "parent".
Ce que je veux vraiment, c'est être en mesure d' $watch
d'une expression dans la portée parent. Si je peux le faire, alors je peux accomplir ce que je suis en train de faire ici:
AngularJS - Comment rendre une partielle avec les variables?
Une remarque importante est que la directive doit être ré-utilisable au sein de la même portée parent. Par conséquent, le comportement par défaut (champ d'application: false) ne fonctionne pas pour moi. J'ai besoin d'une portée individuelle par exemple de la directive, et puis j'ai besoin d' $watch
une variable qui vit dans la portée parent.
Un exemple de code vaut 1000 mots, alors:
app.directive('watchingMyParentScope', function() {
return {
require: /* ? */,
scope: /* ? */,
transclude: /* ? */,
controller: /* ? */,
compile: function(el,attr,trans) {
// Can I get the $parent from the transclusion function somehow?
return {
pre: function($s, $e, $a, parentControl) {
// Can I get the $parent from the parent controller?
// By setting this.$scope = $scope from within that controller?
// Can I get the $parent from the current $scope?
// Can I pass the $parent scope in as an attribute and define
// it as part of this directive's scope definition?
// What don't I understand about how directives work and
// how their scope is related to their parent?
},
post: function($s, $e, $a, parentControl) {
// Has my situation improved by the time the postLink is called?
}
}
}
};
});