Ma question est similaire à celle de celle-ci , mais au lieu d’ajouter une ligne au début, je souhaite l’ajouter.
Cela ne marche pas:
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);
}
}
});
Cela fait le travail:
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);
}
}
});
Je pense que tu as besoin
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);
}
}
});
Démo: Fiddle
Je voulais juste ajouter quelque chose parce que j'avais quelques minutes jusqu'à ce que cela fonctionne. Si vous n'avez pas jQuery dans votre projet, vous ne pouvez pas utiliser la variable insertAfter
. Il suffit d'utiliser after()
à partir de API jQuery .after ()
J'avais besoin d'ajouter quelques éléments dans ma directive entre d'autres enfants.
element.children().eq(0).after(angular.element('<p>Test</p>'));