आपके पास मूल रूप से दो विकल्प हैं, या तो इसे एक सेवा के रूप में परिभाषित करें, या इसे अपने रूट स्कोप पर रखें। मेरा सुझाव है कि आप रूट स्कोप को प्रदूषित करने से बचाने के लिए इसमें से एक सेवा करें। आप एक सेवा बनाते हैं और इसे अपने नियंत्रक में इस तरह उपलब्ध कराते हैं:
<!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;});
और फिर इसे अपने नियंत्रकों में नाम से इंजेक्ट करें। (यदि कोई सेवा करने से बचना चाहता है)