У вас є два варіанти: або визначте це як послугу, або помістіть його в кореневій області. Я б запропонував вам зробити послугу з неї, щоб уникнути забруднення кореневої області. Ви створюєте послугу та надаєте її у свій контролер таким чином:
<!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>
Якщо це не варіант для вас, ви можете додати його до кореневої області на зразок цього:
<!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>
Таким чином, всі ваші шаблони можуть зателефонувати, globalFoo()
не передаючи його шаблону від контролера.
module.value('myFunc', function(a){return a;});
а потім ввести його по імені у свої контролери. (Якщо хтось хоче уникати надання послуги)