Внесите $rootScope вместо $scope, а затем испустите его на $rootScope.
myApp.factory('myFactory', ['$rootScope', function ($rootScope) {
$rootScope.$emit("myEvent", myEventParams);
}]);
Фабрики не имеют доступа к текущей области управления/директивы, потому что их нет. У них есть доступ к корню приложения, хотя и для чего доступен $rootScope.
Ответ 3
В вашем factory введите $rootScope as -
myApp.factory('myFactory',function($rootScope){
return({
// use $rootScope as below to pass myEventParams to all below in hierarchy
$rootScope.$broadcast("myEvent",myEventParams);
})
}]);