Angularjs 范围之外的服务功能
Posted
技术标签:
【中文标题】Angularjs 范围之外的服务功能【英文标题】:Service functions outside Angularjs scope 【发布时间】:2014-02-14 06:47:23 【问题描述】:我在 angularJS 中创建了一个使用 btford.socket-io 模块与服务器交互的服务。 由于在服务中我已经实现了一些我目前在 angular 内部使用的 API,但是对于应用程序的以后扩展,我还需要在 angular 范围之外提供对这些 API 的访问权限。 这样以后就可以直接调用该函数而无需创建控制器和其他东西。
目前我为控制器做了这个
var myController = angular.element($('body')).scope().myController;
通过将整个控制器保存在范围变量中。 我想知道是否可以对服务做同样的事情。
【问题讨论】:
【参考方案1】:怎么样:
angular.element(document.body).injector().get('MyService');
通常不是很好的做法。但有时它需要。
注意:document.body
是您的 Angular 应用程序安装到的元素
您可能会考虑的另一件事是通过工厂使用角度“关闭”外部 api。
例如。从 Angular 工厂返回您的全局或命名空间类或 api。这基本上就是 Angular 为您所做的。但不是先在 angular 内部创建引用并提取它,而是在外部创建它,然后将其注册为 DI 作为工厂或值。
【讨论】:
它有效:) 我知道这很糟糕,因为我在角度范围之外工作。由于我正在使用 angularjs 作为框架创建多个指令,同时我也想将该服务用于外部开发人员 API,我认为没有其他选择。也许重写与angularjs分离的API是可能的,但这会影响架构设计。以上是关于Angularjs 范围之外的服务功能的主要内容,如果未能解决你的问题,请参考以下文章