Ich habe eine Winkelanwendung, die einen ng-repeat-start verwendet, um einige dynamische Informationen anzuzeigen.Manuelles transclude in Verbindung mit ng-repeat
<div>
<table>
<tbody>
<tr my-directive ng-repeat="data in vm.data">
<td ng-bind="data.id"></td>
<td ng-bind="data.id"></td>
</tr>
<tr ng-repeat-end>
<td>extrarow</td>
</tr>
</tbody>
</table>
</div>
Ich baute auch eine Richtlinie, die ich eine Klasse für die gesamte tr anzuwenden, je nach dem Wert von einigen der Daten verwendet werden soll. Ich wollte Link verwenden, um das zu tun, anstatt eine $ Uhr zu verwenden.
Da das selbst viele enthalten kann, wollte ich transclude verwenden, um dies zu tun. Ich möchte nicht, dass der Tag in meiner Tabelle eingefügt werden, da dies all meine Designs bricht, so dass ich dies manuell tun, so etwas wie diese:
function myDirective() {
return {
transclude: true,
scope: {},
link: function($scope, $element, $attrs, $ctrl, $transclude) {
var cloned = $transclude();
$element.append(cloned);
}
}
}
Das Problem ist, das funktioniert nicht wie erwartet. Das geklonte Objekt wird nur an die letzte Zeile der ng-Wiederholung angehängt. Wahrscheinlich liegt das an dem $ element-Objekt, aber ich bin mir nicht sicher.
Ich reproduziert das Problem in diesem jsfiddle.
Irgendwelche Ideen, wo das Problem liegt? Vielen Dank. Sie nicht zu viele haben
Nicht sicher, was Sie versuchen, zu erreichen, aber die transcluden entfernen: true aus Ihrer Richtlinie https://jsfiddle.net/tf9s7skq/1/ Wenn Sie einfach sind versucht, die TR einstellen Klasse basierend auf den Daten, benutze element.css() - die Einblendung sieht hier wie das Falsche aus. – RamblinRose
Nicht sicher, was transclude: false tut, aber Sie haben Recht, alle meine Elemente werden angezeigt, aber auch ein Fehler als $ transclude ist keine Funktion mehr. Außerdem wird die letzte Extrarow nur für die letzte Zeile angezeigt. Auch dies ist ein einfaches Beispiel, aber in meiner App habe ich eine wirklich große Tabelle mit vielen Zellen pro Zeile; Deshalb verwende ich transclude. Ich möchte diese Zellen nicht verlieren, wenn ich die Richtlinie anwende. – David
Ok, @RamblinRose, ich merke nur, dass du Recht hast, da ich keine Vorlage habe, brauche ich keine Transkription, es ist viel einfacher. Danke – David