Angularjs范围之外的服务功能

giu*_*lio 7 javascript socket.io angularjs angularjs-service angularjs-controller

我在angularJS中创建了一个服务,它使用btford.socket-io模块与服务器进行交互.因为在服务中我实现了一些我目前在angular内部使用的API,但是为了以后扩展应用程序,我还需要在角度范围之外访问这些API.因此,将来可以在不需要创建控制器和其他东西的情况下调用该函数.

目前我为控制器做了这个

var myController = angular.element($('body')).scope().myController;
Run Code Online (Sandbox Code Playgroud)

将整个控制器保存在范围变量中.我想知道是否可以对服务做同样的事情.

cal*_*oyd 12

怎么样:

angular.element(document.body).injector().get('MyService');

通常不是很好的做法.但有时需要它.

注意:document.body是您的角度应用程序安装到的元素

您可能会考虑的另一件事是通过工厂"关闭"带角度的外部api.

  • 例如.从角度工厂返回全局或命名空间的类或api.

这实际上是角度对你的影响.但是,不是首先在角度内创建引用并且必须提取它,而是在外部创建它,并将其作为工厂或值注册到DI.