我試圖創建一個directive
追加一個新的html element
到DOM
並且也刪除它。AngularJs指令添加和刪除功能的DOM元素
追加和刪除的邏輯已經在工作,除了在點擊按鈕時刪除element
。現在我只能在按下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();
}
});
}
}
}
如果我按一下按鈕,插入新element
,它的工作原理。如果我按esc
,則刪除element
。但是,如果我按下按鈕關閉具有此"ng-click="removeEl()"
的元素,則什麼都不會發生。
我該如何解決這個問題?
你不需要'的document.getElementById( 「收藏夾」)'。你應該使用'element.find('#lightBox')',因爲它在指令元素中。另外,你是否有一個「在ng-click前?因爲如果你這樣做,那就是問題 –
......或者甚至更好:'scope.removeEl = function(){ngEl.remove();}'就足夠了。 – dfsq
@ChrisStanley關於ngClick no,這是一個錯字錯誤,aboute getElementById我正在使用它,因爲我正在追加到身體,但忘了它,謝謝提醒我 – celsomtrindade