web-dev-qa-db-ja.com

AngularJS –ディレクティブの要素の後に行を追加します

私の質問は これ と似ていますが、行を前に付ける代わりに、追加したいと思います。

これは機能しません:

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

これは仕事をします:

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

私はあなたが必要だと思います

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

デモ: フィドル

3
Arun P Johny

それが機能するまで数分あったので、何かを追加したかっただけです。プロジェクトにjQueryがない場合、insertAfterを使用することはできません。 jQuery API .after() からafter()を使用するだけです

他の子との間のディレクティブにいくつかの要素を追加する必要がありました。

element.children().eq(0).after(angular.element('<p>Test</p>'));
0
NDY