解决方法
如果您需要这些“类”作为angular Services的唯一原因是无痛地注入它们的依赖项,您可以使用$injector.instantiate来实例化它们而不将它们注册为服务.
示例代码:
var PrivateClass = (function () { function PrivateClass($log) { this.hello = function () { $log.debug("Hello World!");} } PrivateClass.$inject = ["$log"]; return PrivateClass; })(); angular.module('TestApp',[]).run(['$injector',function ($injector) { var p = $injector.instantiate(PrivateClass); p.hello(); }]);
您可以在需要它的服务中的构造函数(或任何位置)中使用$injector.instantiate(PrivateClass)来创建PrivateClass的实例.如果你需要PrivateClass表现得像一个单例(就像一个真正的角度服务),你可以使用一个实例化它的访问器类,并返回它对调用者的引用.
这样做的好处是你不需要污染实例化服务(在这种情况下是传递给angular.run的函数),只需要依赖项的依赖数组,这样就可以将它们传递给PrivateClass(在这种情况下为$log) .
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。