2012-12-05 12 views
5

Przeglądałem dokumentację, ale nie znalazłem nic o tym. Używam usługi $ http Angular i chcę uruchomić kod przed każdym zdarzeniem ajaxowym i po każdym zdarzeniu ajaxowym (aby wyświetlić komunikat ładowania podczas oczekiwania na odpowiedź serwera).Czy angularjs ma coś podobnego do ajaxSetup jQuery?

Mam jQuery włączone i próbowała robić:

$(document).ready(function() { 
    $('body').ajaxSend(function(event, jqXHR) { 
     console.log('in jquery send'); 
    }) ; 
}); 

Ale nie mógł się komunikat zalogowany do konsoli. Każda pomoc jest doceniana.

+1

Nie jestem pewien, czy w tej usłudze HTTP jest hak, ale można to w łatwy sposób utworzyć własną usługę owijania wokół $ http, aby to zrobić. – dnc253

Odpowiedz

7

Proszę sprawdzić dokumenty dotyczące służby $ http: http://docs.angularjs.org/api/ng.$http

Przekonasz się, że istnieją dwie możliwości, które można wykorzystać:

  1. httpInterceptor (patrz przechwytujących Response rozdział w dokumenty) - pozwala ci zawijać każdą odpowiedź i robić, co chcesz, zanim wypełni prośbę. Korzysta z obietnic, więc nawet po każdej prośbie można nawet zrobić coś asynchronicznego.

  2. transformacje żądanie/odpowiedź (patrz Przekształcanie żądań i odpowiedzi) - pozwala na przetwarzanie każde żądanie i odpowiedź, która przechodzi przez $ http - tak, że będzie mój wybór, ponieważ pozwala na podłączenie przed i po prośbie.

Powiązane problemy