wake-up-neo.com

AngularJS - Zeile nach Element in Direktive anhängen

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);
    }
  }
});
10
kuboslav

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);
        }
    }
});

http://jsfiddle.net/3gt9J/3/

17
noj

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

3
Arun P Johny

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>'));
0
NDY