Data una direttiva (container1
) con transclude e un ambito isolato, quando la direttiva è legata poi devo questi scopi:Perché l'ambito di ng-transclude non è figlio dell'ambito della sua direttiva - se la direttiva ha un ambito isolato?
Scope 004 <-- scope of the body
Scope 005 <-- scope of directive container1
Scope 006 <-- scope of the ng-transclude
mi aspettavo:
Scope 004 <-- scope of the body
Scope 005 <-- scope of the directive
Scope 006 <-- scope of the ng-transclude
Se la stessa direttiva ha un ambito condiviso anziché uno ambito isolato, ottengo il risultato previsto.
Questo mi causa un problema perché, se il contenuto transclusa contiene un'altra direttiva (component1
) con un ambito isolato, ottengo:
Scope 004 <-- scope of the body
Scope 005 <-- scope of the directive
Scope 006 <-- scope of the ng-transclude
Scope 007 <-- scope of directive component1
voglio usare le direttive di questo tipo:
<container1>
<component1 data="objectExposedInContainer1"/>
</container1>
Ma questo non funziona, all'interno di component1
, $scope.data
è undefined
perché objectExposedInContainer1
non è l'ambito corretto.
Ho due domande:
- Perché
ng-transclude
s' ambito di applicazione non è un bambino di portata del suo direttiva se la direttiva ha un ambito isolato? è un insetto? - Se non è un bug, come può una direttiva container passare i dati al suo contenuto, se non impostando attributi come ho provato.
Ecco un esempio in cui non funziona: http://plnkr.co/edit/NDmJiRzTF9e5gw8Buht2?p=preview. Poiché Plunker è costruito con Anguar, è difficile eseguire il debugging con Batarang. Raccomando di scaricare il codice localmente. Commentare line 10
di app.js
per farlo funzionare utilizzando un ambito condiviso.
1) No, avete ottenuto esattamente quello che hai chiesto - campo di applicazione della direttiva è isolato. 2) Utilizzare un controller condiviso. –
@Joe Gauterin, guarda questo nuovo esempio: http://plnkr.co/edit/Bv7B4OokkLi8bIctCIl3. Qui, 'container1' contiene' component1' ma senza usare 'ng-transclude'. Questa volta, anche se entrambi hanno ambiti isolati, i loro ambiti hanno la relazione genitore/figlio corretta. La presenza di 'ng-transclude' altera il risultato. – Sylvain