在angularjs中,当生成指令时,是否有一种方法可以使用链接函数来操作模板的DOM

In angularjs, when making a directive, is there a way to manipulate the DOM of the template using the link function?

本文关键字:链接 可以使 函数 方法 一种 操作 DOM angularjs 指令 是否      更新时间:2023-09-26

假设我正在angularjs中创建一个动态指令。我想使用链接函数来根据参数操作模板html的DOM。

因此,在普通javascript中,我会做如下操作:

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

我发现了一些答案,他们把模板当作一个字符串,只拼接文字字符串"<div></div>"

然而,我计划做很多修改,所以把它当作一个字符串会很快变得太混乱,如果我这样做的话,它将无法维护。如果可能的话,我希望像在普通js中处理页面DOM一样处理它。

我也对没有模板持开放态度,只在链接函数中动态生成整个内容,如果我有可能以某种方式获得返回的指令

可以在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(...);
}