【发布时间】:2014-07-07 09:22:02
【问题描述】:
我有一个 AngularJs 应用程序。我将控制器用于某些子范围。在每个控制器中,我可以设置一些属于相应子作用域的变量。当 AngularJs 实例化一个控制器时,有一个构造函数,我可以在其中为我的子范围变量设置默认值。
我有控制器“析构函数”吗?我如何知道控制器何时关闭并且范围正在清理(被 $destroy 函数销毁)?
谢谢!
【问题讨论】:
我有一个 AngularJs 应用程序。我将控制器用于某些子范围。在每个控制器中,我可以设置一些属于相应子作用域的变量。当 AngularJs 实例化一个控制器时,有一个构造函数,我可以在其中为我的子范围变量设置默认值。
我有控制器“析构函数”吗?我如何知道控制器何时关闭并且范围正在清理(被 $destroy 函数销毁)?
谢谢!
【问题讨论】:
你必须收听$destroy事件,例如:
function MyController($scope, ...) {
...
$scope.$on("$destroy", function handler() {
// destruction code here
});
}
相关文档:https://docs.angularjs.org/api/ng/type/$rootScope.Scope
【讨论】:
$scope 发出的,所以是的,无论您在哪里可以访问$scope,都可以收听它。本质上,$scope 被销毁并发出此事件;控制器因此而被破坏,因此它有点间接,但仍然稳定。