我需要从角度$ injector中手动获取内容。
我一直在前进:
var injector = angular.injector(['app.service', 'ng']);
var myService = injector.get('myService');
这很有效。但是,自从发现问题以来,我每次拨打run()
时都会调用app.service模块的angular.injector
方法。我有一些东西在那里初始化我的应用程序,现在运行了太多次。
我应该将我的app引导逻辑移出run()方法,还是有另一种方法来获取$ injector而没有调用run()方法?
我还有点担心调用喷油器对性能有害吗?
答案 0 :(得分:1)
文档可能不清楚,但angular.injector
确实用config
和run
块启动了整个模块(否则你会遇到依赖于这些问题的app组件的问题块)。
模块服务的实例(包括$rootScope
)也不会与bootstrapped app中的实例相同。
您可以自由地将模块划分为易于使用的服务,但请记住,您无法与运行Angular应用程序进行交互。如果你需要在Angular内外使用相同的代码,那么在外面定义它。
如果您需要与正在运行的应用互动,请执行
var injector = angular.element(document).injector();
相反,作为文档suggests。
我也有点担心调用喷油器很不好 性能
当然,会有一些RAM和CPU开销,其严重程度完全取决于您的模块。