В angularjs, при создании директивы, есть ли способ манипулировать DOM шаблона с помощью функции link?

0

Скажем, я создаю динамическую директиву в angularjs. Я хочу использовать функцию ссылки для управления DOM шаблона html на основе аргументов.

Таким образом, в javascript для ванили я бы сделал следующее:

var template = ... //something here that sets the variable to the template
var newdiv = document.createElement("div");
template.appendChild(newdiv);

Я нашел несколько ответов, где они рассматривают шаблон как строку и просто соединяются в литеральной строке "<div></div>".

Тем не менее, я планирую сделать большую модификацию, поэтому рассматривая ее как строку, вы быстро будете слишком запутанной и будете недостижимы, если я это сделаю. Если возможно, я хотел бы относиться к нему так же, как я рассматриваю страницу DOM в обычных js.

Я также открыт для того, чтобы не иметь шаблона и просто динамически генерировать все это в функции ссылок, если это возможно для меня каким-то образом получить директиву, чтобы вернуть это

  • 0
    link есть именно для этого. Шаблон автоматически создаст привязки данных, добавленные вручную элементы не будут иметь этой функции. Существует большая вероятность того, что у вас есть проблема XY, и шаблон должен быть преобразован в несколько директив, чтобы перестать быть «запутанными».
  • 0
    Ничего страшного, если нет привязки данных, директива не будет изменена после ее создания. Как мне сделать директиву динамической, основанной на аргументах, а не возвращать один и тот же HTML каждый раз
Показать ещё 4 комментария
Теги:
dom

1 ответ

1
Лучший ответ

Скомпилированный элемент может быть изменен в функции link. Никакие привязки или директивы не могут быть добавлены к элементу на этом этапе без перекомпиляции.

...
link: function (scope, element, attrs) {
  // jqLite element that partly implements jQuery API
  element.append(...);

  // native element that is wrapped with jqLite
  var nativeElement = element[0];
  nativeElement.appendChild(...);
}
  • 0
    Хорошо, но мой вопрос связан с тем, как именно я добавил бы nativeElement к элементу. element.append (nativeElement) не работает
  • 0
    Должно. append принимает несколько типов, включая элементы DOM, здесь следует jQuery APi. Если nativeElement является тем же элементом, что и element , он, очевидно, не будет работать. Пожалуйста, предоставьте воспроизводимый пример (плункер или около того), если у вас возникнут проблемы с этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню