ajax çağrısı her başlatıldığında $ rootScope'ta bir olayı tetiklemeye çalışıyorum.AngularJS: ajax çağrısı her başlatıldığında olayı tetiklemeniz gerekir
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');
});
});
olay 'httpCallStarted' o ateş olmak değil. Yapılandırma bloklarında $ rootScope veya başka bir örnek hizmetinin kullanılmasının doğru olmadığından şüpheleniyorum. Eğer öyleyse, bir çağrı yaptığım her seferde bir config nesnesini geçmek zorunda kalmadan, bir http çağrısı her başladığında bir olayı nasıl alabilirim? peşin
Angularim, angular.injector (['ng']) çağrılarının yanlış gittiğiniz yerdir. Bu, aslında uygulamanızla birlikte kullanılan enjektör işlevini size geri vermez ve bu nedenle $ rootScope'u almaya çalıştığınızda, aslında düşündüğünüzden farklı bir $ rootScope elde edersiniz. Gerçek enjektörü nasıl elde edeceğimi bilmenin tek yolu, angular.element (someselector) .injector() kullanımıdır ve daha sonra buna .get ('$ rootScope') diyebilirsiniz. Yine de bir yapılandırma bloğunda bunu yapmanın sorunlarının olup olmadığını bilmiyorum. –