$rootScope.$emit
é uma ótima maneira de propagar eventos em seu aplicativo. Este snippet irá registrá-los sem tocar no resto do seu aplicativo.
Conforme seu aplicativo AngularJS cresce, você sentirá a necessidade de dividi-lo em dezenas de serviços, diretivas e controladores. $rootScope.$emit
é uma ótima maneira de compartilhar informações com outros módulos: não faz com que seus módulos exijam uns dos outros e não confunde escopos com variáveis globais.
No entanto, há momentos em que você gostaria de saber exatamente quais eventos está enviando. Isso vai fazer isso por você. Eu o mantenho comentado em algum lugar próximo :).
myApp.config(['$provide', function ($provide) {
$provide.decorator('$rootScope', function ($delegate) {
var _emit = $delegate.$emit;
$delegate.$emit = function () {
console.log.apply(console, arguments);
_emit.apply(this, arguments);
};
return $delegate;
});
}]);