$ injector.get导致每次调用Angular模块的run()方法

我需要手动从角度$注入器获取内容。

我已经打算:

var injector = angular.injector(['app.service', 'ng']); 

var myService = injector.get('myService');

这伟大的工作。但是我注意到了一个问题,每次我打电话给angular.injector时,都会调用app.service模块的run()方法。我在那里有东西在初始化我的应用程序,现在它正在运行太多次。

我是否应该将我的应用程序引导逻辑移出run()方法,或者是否有另一种方法在不调用run()方法的情况下获取$ injector?

我也有点担心调用喷油器很多对性能不利?

回答:

的文件可能是对目前还不清楚,但确实angular.injector启动整个模块configrun块(否则你将整个问题与依赖这些块应用组件运行)。

模块服务(包括$rootScope)的实例也不会与自举应用中的实例相同。

您可以自由地将模块划分为服务易于使用的方式,但请记住,您将无法与运行的Angular应用程序进行交互。如果您需要在Angular内部和外部使用相同的代码,请在外部定义它。

如果需要与运行的应用程序,而不是互动,然后做

var injector = angular.element(document).injector(); 

代替,如文档suggests。

我也有点担心打电话给喷油器很多是坏的 表现?

当然,会有一些内存和CPU的开销,其严重程度完全取决于你的模块。

以上是 $ injector.get导致每次调用Angular模块的run()方法 的全部内容, 来源链接: utcz.com/qa/265178.html

回到顶部