Meine Frage ist ähnlich wie diese , aber statt der vorangestellten Zeile soll sie angehängt werden.
Das funktioniert nicht:
app.directive('createTable', function ($compile) {
return {
link: function (scope, element, attrs) {
var contentTr = angular.element('<tr><td>test</td></tr>');
contentTr.parentNode.insertBefore(element, contentTr.nextSibling);
$compile(contentTr)(scope);
}
}
});
Das macht den Job:
app.directive('createTable', function ($compile) {
return {
link: function(scope, element, attrs) {
if (element.next().length) {
element.next().insertBefore(element);
}
var contentTr = angular.element('<tr><td>test</td></tr>');
contentTr.insertAfter(element);
$compile(contentTr)(scope);
}
}
});
Ich denke du brauchst
app.directive('createTable', function ($compile) {
return {
link: function (scope, element, attrs) {
var contentTr = angular.element('<tr><td>test</td></tr>');
contentTr.insertAfter(element);
$compile(contentTr)(scope);
}
}
});
Demo: Fiddle
Ich wollte nur etwas hinzufügen, weil ich einige Minuten hatte, bis es funktionierte. Wenn Sie jQuery nicht in Ihrem Projekt haben, können Sie die insertAfter
nicht verwenden. Verwenden Sie einfach after()
von jQuery API .after ()
Ich musste einige Elemente in meiner Direktive zwischen anderen Kindern hinzufügen.
element.children().eq(0).after(angular.element('<p>Test</p>'));