Sto provando a generare un evento su $ rootScope ogni volta che viene avviata una chiamata ajax.AngularJS: è necessario attivare l'evento ogni volta che viene avviata una chiamata Ajax
var App = angular.module('MyApp');
App.config(function ($httpProvider) {
//add a transformRequest to preprocess request
$httpProvider.defaults.transformRequest.push(function() {
//resolving $rootScope manually since it's not possible to resolve instances in config blocks
var $rootScope = angular.injector(['ng']).get('$rootScope');
$rootScope.$broadcast('httpCallStarted');
var $log = angular.injector(['ng']).get('$log');
$log.log('httpCallStarted');
});
});
L'evento "httpCallStarted" non viene attivato. Sospetto che non sia corretto utilizzare $ rootScope o qualsiasi altro servizio di istanza nei blocchi di configurazione. In tal caso, come posso ottenere un evento ogni volta che viene avviata una chiamata http, senza dover passare un oggetto config ogni volta che effettuo una chiamata?
Grazie in anticipo
Sono abbastanza sicuro che le chiamate a angular.injector (['ng']) sono dove stai andando male. Questo non ti restituisce la funzione di injector che viene effettivamente utilizzata con la tua applicazione e quindi quando cerchi di ottenere $ rootScope ottieni effettivamente un rootScope $ diverso da quello che pensi di essere. L'unico modo in cui so come ottenere il vero iniettore è attraverso l'uso di angular.element (someselector) .injector() e su questo puoi chiamare .get ('$ rootScope'). Non so però se avrai ancora problemi con questo in un blocco di configurazione. –