Pada dasarnya Anda memiliki dua opsi, baik mendefinisikannya sebagai layanan, atau menempatkannya pada ruang lingkup root Anda. Saya menyarankan agar Anda membuat layanan untuk menghindari polusi pada ruang lingkup root. Anda membuat layanan dan membuatnya tersedia di controller Anda seperti ini:
<!doctype html>
<html ng-app="myApp">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp', []);
myApp.factory('myService', function() {
return {
foo: function() {
alert("I'm foo!");
}
};
});
myApp.controller('MainCtrl', ['$scope', 'myService', function($scope, myService) {
$scope.callFoo = function() {
myService.foo();
}
}]);
</script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="callFoo()">Call foo</button>
</body>
</html>
Jika itu bukan opsi untuk Anda, Anda dapat menambahkannya ke cakupan root seperti ini:
<!doctype html>
<html ng-app="myApp">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp', []);
myApp.run(function($rootScope) {
$rootScope.globalFoo = function() {
alert("I'm global foo!");
};
});
myApp.controller('MainCtrl', ['$scope', function($scope){
}]);
</script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="globalFoo()">Call global foo</button>
</body>
</html>
Dengan begitu, semua templat Anda dapat memanggil globalFoo()
tanpa harus meneruskannya ke templat dari controller.
module.value('myFunc', function(a){return a;});
dan kemudian menyuntikkannya dengan nama di controller Anda. (Jika seseorang ingin menghindari membuat layanan)