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){ }]);