2015-09-25 51 views
3

一方面,我有几个工厂,每个工厂都控制一个websocket。如何销毁一个有角度的工厂实例

在另一方面,其中一个工厂当客户端登录,所以应开始的:

if(user.isLogged()){ 
$injector.get('NotificationsWebsocket') 
} 

这就是我dinamically初始化我厂的方式,问题来了,当用户注销。

我不知道如何删除角实例工厂的实例或如何销毁NotificationsWebsocket。 我试图关闭套接字,但是当我再次登录时,套接字不连接,因为工厂没有重新连接。

回答

0

你不能摧毁工厂,它们是单身人士,当他们首次被模块需要时,他们只创建一次。

您可以添加到您的工厂的两种方法:setup(),close()这将创建和关闭套接字。

当用户登录时,您在注销时呼叫setup() - close()

+0

这正是我所做的。 – Serginho

+0

顺便说一句......那么所有的提供者都是单身人士,对吗? – Serginho

+0

正确。 _注意:Angular中的所有服务都是单例。这意味着注射器至多使用每个配方一次来创建对象。注入器然后缓存所有未来需求的引用._来自[这里](https://docs.angularjs.org/guide/providers)。 – ieaglle