it-swarm.com.ru

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

Демонстрация: Fiddle

3
Arun P Johny

Просто хотел что-то добавить, потому что у меня было несколько минут, пока это не сработало. Если в вашем проекте нет jQuery, вы не можете использовать insertAfter. Просто используйте after() из jQuery API .after ()

Мне нужно было добавить некоторые элементы в моей директиве между другими дочерними элементами.

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