¿Cómo acceder al ámbito padre desde una directiva personalizada *con ámbito propio * en AngularJS?
Estoy buscando cualquier forma de acceder al ámbito "padre" dentro de una directiva. Cualquier combinación de scope, transclude, require, pasando variables (o el propio scope) desde arriba, etc. Estoy totalmente dispuesto a hacer lo imposible, pero quiero evitar algo totalmente hackeado o inalcanzable. Por ejemplo, sé que podría hacerlo ahora mismo tomando $scope
de los parámetros de preLink e iterando sobre sus ámbitos $sibling
para encontrar el "padre"conceptual.
Lo que realmente quiero es ser capaz de $watch
una expresión en el ámbito padre. Si puedo hacer eso, entonces puedo lograr lo que estoy tratando de hacer aquí:
AngularJS - ¿Cómo renderizar un parcial con variables?
Una nota importante es que la directiva debe ser reutilizable dentro del mismo ámbito padre. Por lo tanto, el comportamiento predeterminado (ámbito: false) no funciona para mí. Necesito un ámbito individual por instancia de la directiva, y luego necesito $watch
una variable que vive en el padre alcance.
Un ejemplo de código vale 1000 palabras, así que:
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?
}
}
}
};
});
Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32
Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52