Il problema è semplice: utilizzando AngularJS non è possibile immettere $ accedere al provider.
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
};
});
Sì, siamo in grado di iniettare $logProvider
, ma non ha metodi necessari (.log
, .error
, etc.).
Sì, è possibile iniettare $logProvider
e quindi chiamare manualmente $logProvider.$get()
, ma non sarà possibile utilizzare la logica aggiuntiva dai decoratori.
Sì, possiamo scrivere il nostro logProvider, ma mi chiedo perché Angular non supporta questa funzionalità immediatamente.
Quindi, non possiamo usare la console in 'modo angolare vero' nel provider? Questo fatto è molto strano. E triste.
La domanda: in che modo è necessario utilizzare la console in "modo angolare" nei provider?
Non sono riuscito a trovare alcuna spiegazione di questo problema. Angular Developers Guide dice che dobbiamo usare $ log ovunque anziché console.
Solo per aggiungere a questo, che questo '$ log' sarà un'istanza diversa da quella che verrebbe iniettata nell'app. Con '$ log' potrebbe non essere importante, ma se fosse un servizio diverso, potrebbe –
@PSL,' angular.injector (['ng']). Get ('$ log') 'è una bella soluzione! (perdiamo ancora la logica dai decoratori personalizzati, ma mi sto prendendo cura di questo fatto triste). Ma tu non rispondi alla mia domanda. Penso che l'utente ** dovrebbe ** essere in grado di utilizzare $ log (o qualcosa) nelle sezioni provider e config. Pensi che non ci sia una soluzione "vera angolare" per questo problema? Qualcosa come il metodo Angular.log() nativo. –
@harryburns Francamente ho dovuto fare molte registrazioni in quei blocchi. Se proprio non usi console.log .. in qualsiasi modo tu non possa veramente usare di iniettando il servizio $ log stesso là fuori, quindi qual è il punto .. e non ci sono funzioni di registro statico disponibili in angolare. – PSL