问题很简单:使用AngularJS时,我们无法将 $log 注入到提供程序中。
angular.module('my.module', [])
.provider('myProvider', function ($log, $logProvider) {
$log.log("Aloha!"); // Unknown provider: $log
$logProvider.log("Hi!"); // undefined is not a function: $logProvider has no `log` method
this.$get = function($log) {
$log.log("Hello!"); // Everything is ok here
};
});
是的,我们可以注入$logProvider
,但它没有必要的方法(.log
,.error
等)。
是的,我们可以注入$logProvider
,然后手动调用$logProvider.$get()
,但我们将无法使用修饰器中的额外逻辑。
是的,我们可以编写自己的logProvider,但我想知道为什么Angular不支持这个功能。
所以,在提供程序中我们不能"真正的使用 Angular 方式"来使用控制台?这个事实非常奇怪。而且很伤心。
问题:我需要如何在提供程序中"真正的使用 Angular 方式"来使用控制台?
我找不到关于这个问题的任何解释。
Angular Developer's Guide说我们需要在所有地方使用 $log
而不是控制台。
$log
将是一个不同的实例,而不是注入到应用程序中的实例。对于$log
可能没有关系,但如果是另一个服务,那就有可能了。 - New Dev