【发布时间】:2016-03-09 18:15:47
【问题描述】:
我有一个附加到 angularjs 控制器的指令,类似于
<my-directive id="my-unique-directive" ng-controller="MyController"></my-directive>
在我的控制器中,在某些时候我需要这个指令消失。然后我在其中混入了一些 jQuery,这样我就可以$('#my-unique-directive').remove();
它工作正常,但我这样做正确吗?我知道您不应该访问控制器内的 DOM 元素,但我还能如何实现这个结果?
为了测试我的控制器是否被破坏,我设置了一个函数,该函数将每隔一秒 console.log('I'm still here');,并且在我删除 DOM 元素后立即调用该函数。 (另外,该函数附加到控制器本身,而不是 $scope)
这证实了我的担忧:控制器没有被销毁,即使在指令被删除后日志仍然显示。
销毁 DOM 元素后如何销毁控制器?
【问题讨论】:
-
不确定你对这个控制器有什么看法?真的需要销毁吗?首先不要使用 jQuery,也许使用 ng-if="dontShowMe"
-
是的,ng-if 会为你完成这项工作plnkr.co/edit/t0MZrSmeAD0BQVKW9RVw?p=preview
-
我认为如果我要在另一个地方重复使用我创建的姿势,我需要破坏它
标签: javascript jquery angularjs dom