Enfant personnalisé directive accéder à portée de parent
Je vais avoir deux des directives sur mesure dans mon application angularJS. Un acte comme un parent et d'autres agissent comme des enfants. Je suis en train d'essayer d'accéder à un parent de la portée de l'enfant à l'intérieur de la directive. Mais je ne suis pas d'obtenir le résultat souhaité.
<div ng-controller="CountryCtrl">
{{myName}}
<div ng-controller="StateCtrl">
<state nameofthestate="'Tamilnadu'">
<city nameofthecity="'Chennai'"></city>
</state>
</div>
</div>
et mon script ressemble
var app = angular.module("sampleApp",[]);
app.controller("CountryCtrl",function($scope){
$scope.myName = "India";
});
app.controller("StateCtrl",function($scope){
});
app.directive("state",function(){return {
restrict : 'E',
transclude: true,
scope : { myName : '=nameofthestate'},
template:"** {{myName}} is inside {{$parent.myName}}<br/><ng-transclude></ng-transclude>"
}});
app.directive("city",function(){return {
restrict : 'E',
require:'^state',
scope : { myName : '=nameofthecity'},
template:"**** {{myName}} is inside {{$parent.myName}} which is in {{$parent.$parent.myName }}<br/> "
}});
Correspondant JSFiddle disponible dans https://jsbin.com/nozuri/edit?html,js,sortie
La sortie qui je suis, il est
India
** Tamilnadu is inside India
**** Chennai is inside India which is in Tamilnadu
et la sortie attendue est
India
** Tamilnadu is inside India
**** Chennai is inside Tamilnadu which is in India
Quelqu'un peut-il m'instruire de ce que je fais de mal ici?
- désolé , mais votre violon n'est pas de travail pour moi.
- salut stackoverflow.com/questions/23437113/... cela peut vous aider, c'est ressembler à ce que vous voulez faire
- Vous pouvez personnaliser un transclude avec
transclude : 'element'
. Le constructeur est disponible danslink : function(scope, element, attrs, Ctlr, transclude){}
Vous devez vous connecter pour publier un commentaire.
La ville directive $parent est un transcluded champ d'application de la directive d'état.
La transcluded champ d'application de la directive d'état est héritent de $parent de l'etat, de la directive, qui est contrôleur ainsi, c'est pourquoi $parent.MyName = Inde.
L' $parent de transcluded portée de la directive d'état isolé de la portée ( scope = {} ), c'est pourquoi $parent.$parent.MyName = tamil nadu ( Partie Angulaire 1.3 mise à jour )
Peu de détail de ce qu'il se passe :
Comment accéder à portée parent de l'intérieur personnalisé directive *avec son propre champ d'application* dans AngularJS?
Aussi Matthieu réponse est bonne pour parent-enfant directive communications.
Fait ce travail pour vous? Adapté de cette réponse.
Il n'y a pas de moyen simple d'accéder à la transcluded contenu de l'élément parent, de sorte que nous injecter le contrôleur de parent à l'enfant d'accéder à son champ d'application.
AngularJS et en cours d'Exécution
Découvrez solution de mon directive, il travaille avec beaucoup de parrents. Ce que j'ai fait était de supprimer transclude et nécessitent params. Ne pas s'inquiéter sale html, il suffit de regarder js, simple comme f.. 😀