如何为Javascript中创建的DOM元素设置Angular指令

如何为Javascript中创建的DOM元素设置Angular指令,javascript,html,angularjs,angularjs-directive,angular2-directives,Javascript,Html,Angularjs,Angularjs Directive,Angular2 Directives,我有一个指令,允许拖放Dom元素,即: JS: 现在,当我在HTML页面上创建DOM元素并指定特定的指令时,我可以使用它并且工作得非常好(拖放功能)。像 HTML: 指令在这种情况下不起作用 有什么问题 我做错了什么 谢谢 不能仅将指令添加为HTML节点。因为通过这种方式,您将jquery/javascript与AngularJS混合在一起。添加新元素时,AngularJS无法知道它已被添加。您可以使用$compile服务编译HTML元素,以便AngularJS实际执行您的指令 请参见:将要创建

我有一个指令,允许拖放Dom元素,即:

JS:

现在,当我在HTML页面上创建DOM元素并指定特定的指令时,我可以使用它并且工作得非常好(拖放功能)。像

HTML:

指令在这种情况下不起作用

有什么问题

我做错了什么


谢谢

不能仅将指令添加为HTML节点。因为通过这种方式,您将jquery/javascript与AngularJS混合在一起。添加新元素时,AngularJS无法知道它已被添加。您可以使用$compile服务编译HTML元素,以便AngularJS实际执行您的指令

请参见:

将要创建的元素附加到DOM之前,需要先添加到该元素:

div.setAttribute("my-draggable","");
$compile(div)($scope)
tempView.appendChild(div);
类似的问题也有答案

<div my-draggable = "">Hello</div>
<div my-draggable = "">Sid</div>
var tempView = document.getElementById('ngView');
var div = document.createElement("div");
var t = document.createTextNode("This is a paragraph.");
div.appendChild(t);
div.setAttribute("my-draggable","");
tempView.appendChild(div);
div.setAttribute("my-draggable","");
$compile(div)($scope)
tempView.appendChild(div);