我寫了一個簡單的例子,我使用$ compile動態地創建了一個元素。這個新的元素有另一個按鈕,我想要刪除這個元素(我讀過,它是很好的銷燬範圍/元素,以避免泄漏)。但函數closeThisElement()不起作用;請幫忙。
看到這裏plunker:http://plnkr.co/edit/js7mpUMndjZEdMvRMuZk?p=preview
而且重現下面的代碼的一部分:
link: function($scope, $element) {
function closeThisElement(){
$element.remove();
}
function addComment(){
$element.append($compile('<div class="publishComment"><input type="text" ng-model="contentForReply"/><button ng-click="publishReply(contentForReply); closeThisElement()">Publish Reply</button></div>')($scope));
}
$scope.addComment = addComment;
}
問題是這將它鏈接到父級的範圍,並且整個父元素被取消。我只想要$ compile創建的元素被刪除。我知道ng-repeat已經是'繼承'範圍,所以設置範圍:true也不應該有任何影響。如果我將範圍與範圍隔離:{},它也不起作用。感謝您查看它。 –
@KayaToast,編輯帖子,希望它有幫助。 –
我用你的更新後的代碼嘗試了它,但是現在沒有元素被刪除。是的,ng-show/hide是一個選項。但我真的想了解範圍並編譯。我已經將這個簡化示例中需要解決的更復雜的問題抽象出來了。 –