Angular 1.5服务的析构函数

时间:2016-12-13 19:31:06

标签: angularjs

我有一个包装SignalR代理的Angular 1.5服务。当Angular应用程序被销毁时,我想明确地保留用户已注册的所有SignalR组,而不是等待显式SignalR超时。

我知道使用Angular 1.5x控制器,我可以听:

$scope.$on("$destroy", function handler() { ... });

但我不确定如何在服务中“清理”并释放我不再需要的资源。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以在服务中定义清洁功能,并在$destroy控制器时调用它。

scope.$on('$destroy', function() { ... });

在角度1.5中,组件中也有$onDestroy

但是,您不能总是打赌$destroy将被调用(假设用户杀死了浏览器进程),因此您还需要从服务器端提供一些解决方案。

答案 1 :(得分:0)

服务是Angular中的单例,因此它们没有像方法那样的破坏。 我不熟悉SignalR,但如果他们有取消订阅方法,你应该在不需要听众时调用这个方法。