我在angularJS中创建了一个服务,它使用btford.socket-io模块与服务器进行交互。 由于在服务中我实现了一些我目前在angular内部使用的API,但是为了以后扩展应用程序,我还需要在角度范围之外提供对这些API的访问。 因此,将来可以在不需要创建控制器和其他东西的情况下调用该函数。
目前我为控制器做了这个
var myController = angular.element($('body')).scope().myController;
将整个控制器保存在范围变量中。 我想知道是否可以对服务做同样的事情。
答案 0 :(得分:11)
怎么样:
angular.element(document.body).injector().get('MyService');
通常不是很好的做法。但有时需要它。
注意:document.body
是您的角度应用程序挂载到
你可能会考虑的另一件事是通过工厂'关闭'带角度的外部api。
这实际上是角度对你的影响。但是,不是首先在角度内创建引用并且必须提取它,而是在外部创建它,并将其作为工厂或值注册到DI。