Ho un generico direttiva <item>
, e una direttiva <listing>
con filtri e strumenti di impaginazione della messa in vendita che <item>
:transclusion multilivello in angolare 1.5
Esempio: https://plnkr.co/edit/r6byzhFX5m674ONhH1JS?p=preview
Il modello <listing>
è qualcosa del genere:
<div ng-repeat="item in items">
<item date="item">
<ng-transclude ng-transclude-slot="itemContent"></ng-transclude>
</item>
</div>
La direttiva <item>
utilizza il nuovo angolare 1.5 multi-slot inclusione per personalizzare piè di pagina e intestazione facilmente:
<item data="itemData">
<header>My header</header>
<footer>My custom footer</footer>
</item>
Il mio problema si pone quando cerco di personalizzare gli elementi che quando si utilizza <listing>
. Se uso qualcosa di simile:
<listing items="myItems">
<item-content>
<header>{{ item.name }}</header>
<footer>My custom footer for {{ item.name }}</footer>
</item-content>
</listing>
Non funziona, perché il <item-content>
viene inserito in <item>
, ma <header>
e <footer>
non ottenere transclusa nei loro posto, e non in grado di leggere la variabile item
ambito . C'è un modo per raggiungere questo obiettivo?
Puoi creare un plnker o un violino per questo? Vorrei approfondire questo problema un po 'di più. – Beyers
Eccolo: https://plnkr.co/edit/r6byzhFX5m674ONhH1JS?p=preview –
Per quanto posso vedere, quello che stai cercando di fare non funzionerà. In base alla progettazione, trascludi le modifiche nel modo in cui gli ambiti sono nidificati. Rende in modo che il contenuto di una direttiva transclusa abbia tutto l'ambito al di fuori della direttiva, piuttosto che qualsiasi ambito sia all'interno. Fornisce ai contenuti l'accesso all'ambito esterno. Quindi nel tuo esempio il contenuto escluso all'interno di '' e '' accede all'ambito del controller.Potrebbe esserci un modo per aggirare questo usando il parametro 'transcludeFn' di' link'. Ma non sono sicuro di come 'transcludeFn' funzioni con la funzione multi-slot. –
Beyers