Скажем, я создаю динамическую директиву в 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.
Я также открыт для того, чтобы не иметь шаблона и просто динамически генерировать все это в функции ссылок, если это возможно для меня каким-то образом получить директиву, чтобы вернуть это
Скомпилированный элемент может быть изменен в функции 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(...);
}
append
принимает несколько типов, включая элементы DOM, здесь следует jQuery APi. Если nativeElement
является тем же элементом, что и element
, он, очевидно, не будет работать. Пожалуйста, предоставьте воспроизводимый пример (плункер или около того), если у вас возникнут проблемы с этим.
link
есть именно для этого. Шаблон автоматически создаст привязки данных, добавленные вручную элементы не будут иметь этой функции. Существует большая вероятность того, что у вас есть проблема XY, и шаблон должен быть преобразован в несколько директив, чтобы перестать быть «запутанными».