如何将Angular Directive设置为在Javascript中创建的DOM元素
How to Set Angular Directive to the DOM element created in Javascript
我有一个指令,它允许拖放Dom元素,即:
JS:
angular.module('animationApp').directive('myDraggable', ['$document', function($document){return{link: function(scope, element, attr) {
var startX = 0, startY = 0, x = 0, y = 0;
console.log("In myDraggable directive code");
element.css({
position: 'relative',
cursor: 'pointer'
});
element.on('mousedown', function(event) {
// Prevent default dragging of selected content
event.preventDefault();
startX = event.pageX - x;
startY = event.pageY - y;
$document.on('mousemove', mousemove);
$document.on('mouseup', mouseup);
});
function mousemove(event) {
y = event.pageY - startY;
x = event.pageX - startX;
element.css({
top: y + 'px',
left: x + 'px'
});
}
function mouseup() {
$document.off('mousemove', mousemove);
$document.off('mouseup', mouseup);
}
}};}]);
现在,当我在HTML页面上创建DOM元素并分配特定指令时,我可以使用它,并且工作得非常好(拖放功能)。比如
HTML:
<div my-draggable = "">Hello</div>
<div my-draggable = "">Sid</div>
问题是,我无法将指令分配给我在Javascript代码中创建的那些元素比如
JS:
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);
指令在这种情况下不起作用!
问题出在哪里?
我做错了什么?
谢谢!
在将要创建的元素附加到DOM:之前,需要先将其$compile
div.setAttribute("my-draggable","");
$compile(div)($scope)
tempView.appendChild(div);
这里有一个类似问题的答案。
不能仅将指令添加为HTML节点。因为通过这种方式,您将jquery/javascript与AngularJS混合在一起。当您添加一个新元素时,AngularJS无法知道它已经被添加。您可以使用$compile服务来编译HTML元素,以便AngularJS实际执行您的指令。
请参阅:在AngularJS 中动态添加指令
相关文章:
- 从javascript创建一个列表
- 使用Javascript创建测验页面
- 获取对使用Tampermonkey使用javascript创建的元素的引用
- Jquerymobile-使用javascript创建选择菜单
- 使用SVG和JavaScript创建波浪动画
- 用javascript创建一个看起来正常分布的模式
- 如何在Ol3弹出窗口中添加用javascript创建的按钮上的点击事件
- 在PHP邮件中发送javascript创建的内容
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- 重置使用javascript创建的新tr的val
- 如何使用javascript创建颜色数组
- javascript创建日期的月份错误
- 如何使用JavaScript创建时间计数器
- 使用Javascript创建内部样式表
- 用javascript创建另一个对象的实例
- 如何使用HTML、CSS和JavaScript创建自动图片库幻灯片
- 使用Javascript创建的Cookie在C#代码中不可访问..任何原因或其他选择
- 用javascript创建对象的dynamic数组
- Javascript创建函数,以便在其他函数之间共享变量
- 使用javascript创建幻灯片效果