我試圖在每次啓動ajax調用時觸發$ rootScope上的事件。AngularJS:每次啓動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');
});
});
事件 'httpCallStarted' 它沒有被解僱。我懷疑在配置塊中使用$ rootScope或任何其他實例服務是不正確的。如果是這樣,那麼每次http調用開始時我怎麼能得到一個事件,而不必在每次打電話時都傳遞一個配置對象?
在此先感謝
我很確定對angular.injector(['ng'])的調用是你錯誤的地方。這並不能讓您回想起應用程序實際使用的注入器功能,因此當您嘗試獲取$ rootScope時,實際上獲得的是與您認爲的不同的$ rootScope。我知道如何獲得真正的注射器的唯一方法是通過使用angular.element(someselector).injector(),然後您可以調用.get('$ rootScope')。我不知道你在配置塊中是否仍然有問題。 –