我正在使用一个javascript库,在更新某些数据时会向DOM添加/删除元素
要向DOM添加新元素,它会调用返回元素的模板函数。在我的例子中,模板函数在angular指令中定义并返回类似return $compile(html)(scope)[0];
的内容,因为我需要在添加的元素中使用UI Bootstrap Popover指令。
对于Popover,我需要使用popover-append-to-body="true"
。
我的问题是,如果从DOM中删除了触发元素,则永远不会删除弹出窗口。因此,如果我们添加一个新的触发元素,则第二个弹出框将附加到正文等。
以下是一个简化示例:http://plnkr.co/edit/AFsXBcaLBAs0F2garbAu?p=preview
单击“单击”按钮打开弹出框,单击“删除”删除“单击”按钮,单击“添加”重新添加“单击”按钮,再单击“单击”再添加第二个弹出窗口到DOM。
如何从DOM中删除触发元素时删除Popover指令?
我需要完全删除它,不仅要隐藏它/从DOM中删除它(我可以用popover-is-open
隐藏它,但是当它被设置回true时,我看到弹出窗口仍然存在)。
有没有办法在要删除的元素的Popover指令上调用destroy?
答案 0 :(得分:0)
你不应该在JS和HTML中使用控制器进行DOM操作,这就是指令的原因,对于你的情况,你可以使用一些内置的指令。
ng-click
将点击事件绑定到控制器中的函数onclick
ng-click