gpt4 book ai didi

javascript - 如果 DOM 元素获取 "removed",AngularJS Controller 就会被销毁?

转载 作者:行者123 更新时间:2023-12-03 08:12:13 24 4
gpt4 key购买 nike

我有一个附加到 angularjs Controller 的指令,类似于

<my-directive id="my-unique-directive" ng-controller="MyController"></my-directive>

在我的 Controller 内,在某些时候我需要这个指令消失。然后我将一些 jQuery 混合到其中,这样我就可以 $('#my-unique-directive').remove();

它工作正常,但我这样做正确吗?我知道您不应该访问 Controller 内的 DOM 元素,但是我还能如何实现此结果?

为了测试我的 Controller 是否被破坏,我设置了一个函数,该函数每隔一秒就会 console.log('I'm still here'); ,并且在我删除后立即调用该函数DOM 元素。 (此外,该函数附加到 Controller 本身,而不是 $scope)

这证实了我的担忧: Controller 没有被破坏,即使在指令被删除后日志仍然显示。

销毁 DOM 元素后如何销毁 Controller ?

最佳答案

ng-if 将为您完成这项工作:

<my-directive id="my-unique-directive" ng-controller="MyController" ng-if="!isDeleted"></my-directive>

只需将 isDeleted 设置为 true 即可删除元素和相关范围。

注意:如果将 Controller 存储到某个变量中,它不会被破坏。 (因为垃圾收集器将无法收集它)如果您使用 $timeout(console.log('I am here'), 1000) - 它仍然会被执行。但这并不意味着 Controller 存在。

关于javascript - 如果 DOM 元素获取 "removed",AngularJS Controller 就会被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com