Angularjs范围之外的服务功能

时间:2014-01-23 15:46:14

标签: javascript angularjs angularjs-service angularjs-controller socket.io

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

目前我为控制器做了这个

var myController = angular.element($('body')).scope().myController;

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

1 个答案:

答案 0 :(得分:11)

怎么样:

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

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

注意:document.body是您的角度应用程序挂载到

的元素

你可能会考虑的另一件事是通过工厂'关闭'带角度的外部api。

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

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