10

我的问题与类似,但我希望它附加而不是前置行。

这不起作用:

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

3 回答 3

17

这可以完成工作:

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/

于 2013-08-28T09:25:41.860 回答
3

我想你需要

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

演示:小提琴

于 2013-08-28T08:53:35.390 回答
0

只是想添加一些东西,因为我有几分钟的时间才能工作。如果您的项目中没有 jQuery,则不能使用insertAfter. 只需使用after()jQuery API .after()

我需要在我的指令中添加一些元素到其他孩子之间。

element.children().eq(0).after(angular.element('<p>Test</p>'));
于 2016-07-01T08:19:51.177 回答