Come creare una funzione disponibile in tutti i controller creando un servizio o inserendola nel root scope

Abbiamo 2 scelte per poter creare una funzione “globale” e quindi una funzione disponibile in tutti i controller:
1) Creare un servizio
2) Oppure inserirla nel root scope

Per evitare di “inquinare” il root scope, seguiremo quindi la prima strada.

Creiamo il servizio con .factory nel seguente modo:

var myApp = angular.module('myApp', []);

myApp.factory('mioServizio', function() {
   return {
      miaFunzione: function() {
         alert("Servizio di prova!");
      }
   };
});

Ora impostiamo il controller in modo che possa chiamare il servizio mioServizio:

myApp.controller('MainCtrl', ['$scope', 'mioServizio', function($scope, mioServizio) {
   $scope.chiamaServizio = function() {
      mioServizio.miaFunzione();
   }
}]);

Ora nella view

<!doctype html>
Chiama funzione globale

Mentre volendo utilizzare il metodo del root scope

var myApp = angular.module('myApp', []);

myApp.run(function($rootScope) {
   $rootScope.globalFoo = function() {
      alert("I'm global foo!");
   };
});

myApp.controller('MainCtrl', ['$scope', function($scope){

}]);
funzione disponibile in tutti i controller
funzione disponibile in tutti i controller