我正在尝试创建一个指令来添加新的HTML元素到DOM中,同时也要移除它。目前已有添加和移除的逻辑,但是在点击按钮时无法移除该元素。现在只能通过按下ESC键来移除它。我在这里提供了这个指令:
如果我点击插入新的
我该如何解决这个问题?
function scLight() {
return {
restrict: 'A',
link: function(scope, element) {
var myEl = '<div sc-light id="lightBox" class="debugModal"><h1>Tests</h1><button ng-click="removeEl()">Close</button></div>',
ngEl = angular.element(myEl);
scope.insertEl = function() {
// angular.element(document.body).append(ngEl); //Append to body
element.append(ngEl); //Append to element
}
scope.removeEl = function() {
var lightBoxEl = document.getElementById("lightBox"),
ngLightBoxEl = angular.element(lightBoxEl);
ngLightBoxEl.remove();
}
document.addEventListener("keyup", function(event) {
if(event.which == 27) {
return scope.removeEl();
}
});
}
}
}
如果我点击插入新的
元素
按钮,它会起作用。如果我按下esc
键,则元素
将被删除。但是,如果我按下关闭元素的按钮,该按钮具有"ng-click="removeEl()"
,则没有任何反应。我该如何解决这个问题?
document.getElementById("lightBox")
。你应该使用element.find('#lightBox')
,因为它在指令元素内部。另外,你的 ng-click 前面有一个引号吗?如果是这样,那就是问题所在。 - Chris Stanleyscope.removeEl = function() { ngEl.remove(); }
就足够了。 - dfsqngEl.remove()
返回以下错误:在 Angular 表达式中引用 DOM 节点是不允许的!
而element.find
则返回一个空对象。 - celsomtrindade