2013-08-26 15 views
14

Ho verificato i servizi AngularJS nella console del browser durante lo sviluppo per la verifica rapida. Il mio modo di iniettare un servizio in console è come descrivere in this question o

var $inj = angular.injector(['myApp']); 
var serv = $inj.get('myService'); 
serv.doSomething(); 

che stava lavorando perfettamente con AngularJS 1.0.7. Tuttavia, dopo l'aggiornamento alla versione 1.1.5, non funziona più per i servizi che utilizzano il servizio $http, che non verrà inviato xhr.

Ho provato a iniettare direttamente $http, ma non funziona. Il changelog di AngularJS sembra non avere registrazioni su questo problema. Posso sapere qual è il problema qui?

Aggiornamento:

Sembra AngularJS 1.0.7 versione non compressa non funziona pure. Attualmente la versione funzionante testata è solo AngularJS 1.0.7 Minified.

Funziona anche per Non compresso.

+1

funziona se si ottiene l'accesso al servizio '$ rootScope' e chiamare' $ rootScope. $ Applicare() '? L'altro giorno mi sono imbattuto in una sorta di problema simile e dare il via a un ciclo di digest era la soluzione. –

+0

@BrandonTilley Che funziona in modo fantastico! Quindi '$ http' è cambiato per essere come '$ q' che sarà risolto solo in un ciclo di digestione? Penso che dovrei leggere il log delle modifiche più da vicino. Grazie! – PSWai

+0

Sì, penso di sì. Ho pensato che forse avevo immaginato che funzionasse senza un ciclo di digestione, ma mi hai aiutato a capire che non sono fuori di testa (almeno non per questo.) –

risposta

40
$http = angular.element(document.body).injector().get('$http'); 

poi

$http.get(...) // or post or whatever 
+2

Questo mi è piaciuto! Non so nemmeno perché la persona che ha chiesto non lo assegna come risposta corretta! –

+0

ah dannazione, è fantastico! Abbiamo Marketeers che utilizza Optimizely per eseguire i test AB e ora non è necessario includere anche jQuery pesante !! – George

Problemi correlati