2013-08-26 6 views
14

Testowałem usługi AngularJS w konsoli przeglądarki podczas programowania w celu szybkiej weryfikacji. Sposób, w jaki wstrzyknąć usługę w konsoli jest opisać w this question lub

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

To było doskonale pracuje z angularjs 1.0.7. Jednak po aktualizacji do wersji 1.1.5 nie działa już w przypadku usług korzystających z usługi $http, że nie zostanie wysłany żaden xhr.

Testowałem bezpośrednio wstrzykiwanie $http, to również nie działa. Dziennik zmian AngularJS wydaje się nie mieć żadnego zapisu na ten temat. Czy mogę wiedzieć, jaki jest tutaj problem?

Aktualizacja:

Wydaje się angularjs 1.0.7 wersja nieskompresowany nie działa tak dobrze. Obecnie testowana działająca wersja to tylko AngularJS 1.0.7 Minified.

Działa również w przypadku Nieskompresowanego.

+1

Czy to działa, jeśli uzyska dostęp do usługi '$ rootScope' i wywołać' $ rootScope. $ Apply() '? Pewnego dnia spotkałem się z czymś podobnym do tego problemu, a skrócenie cyklu trawienia było naprawą. –

+0

@BrandonTilley To działa fantastycznie! Czy zmieniono '$ http' na' 'qq', który zostanie rozwiązany tylko w cyklu skrótów? Myślę, że powinienem uważniej czytać dziennik zmian. Dzięki! – PSWai

+0

Tak, tak myślę. Pomyślałem, że mogłem sobie wyobrazić, że działa bez cyklu trawienia, ale pomogłeś mi zdać sobie sprawę, że nie jestem z głowy (przynajmniej nie z tego powodu :) –

Odpowiedz

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

następnie

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

Uwielbiam to! Nawet nie wiem, dlaczego osoba, która go poprosiła, nie przypisuje tego jako poprawnej odpowiedzi! –

+0

ah cholera, to niesamowite! Mamy Marketeers używających Optimizely do przeprowadzania testów AB i teraz nie ma potrzeby dodawania ciężkiego jQuery !! – George