Ich habe gerade begonnen, AngularJS zu studieren und versucht, benutzerdefinierte Tabelle Richtlinie mit der multiple slots transclude zu implementieren. And faced Situation, dass Umfang nicht übertragen übertragen. Es gibt viele Lösungen in anderen StackOverflow-Fragen, aber alle funktionieren nur, wenn in der Direktivenvorlage ng-repeat für das oberste Element angezeigt wird, aber das ist nicht mein Fall. Zumindest kann ich nicht alle diese Lösungen übernehmen.Angular ng-Bereich in Wiederholung umwandeln
Vereinfachte Version. Richtlinie:
<span>
<div>Some pagination</div>
<div style="display: inline"><input type="text" placeholder="Search"/></div>
<div style="display: inline">Some filters</div>
<table>
<tbody>
<tr ng-repeat="line in lines" ng-transclude="row">
</tr>
</tbody>
</table>
<div>Some pagination again</div>
</span>
der Direktive:
<my-table>
<row>
<td>{{line.col1}}</td>
<td>{{line.col2}}</td>
</row>
</my-table>
Voll Beispiel mit dem Skript auf Plunkr: https://plnkr.co/edit/rg43ZdPMGHLBJCTLOoLC
Jede Beratung sehr geschätzt.
Wissen Sie warum anstelle von td Tags Winkel einfügen ' testCol1 testCol2 '? – johngull
Ja, es hat damit zu tun, dass der Browser vor der Übertragung ungültiges HTML registriert (soweit ich das beurteilen kann). Dies ist ein Problem, das damit zu tun hat, Elemente des Typs "" allgemeiner zu übersetzen. Http://stackoverflow.com/questions/26048996/using-ng-transclude-doesnt-seem-to-work-well-in-a-table für mögliche Arbeit um – jbmilgrom
Beachten Sie, dass die 'ng-binding' und' ng-scope "classes" sind nur normale eckige Hauswirtschaft. Mein Kommentar oben ist ein über die Elementzwang, den Sie sehen – jbmilgrom