Về cơ bản, bạn có hai tùy chọn, hoặc xác định nó là một dịch vụ hoặc đặt nó trên phạm vi gốc của bạn. Tôi sẽ đề nghị bạn thực hiện một dịch vụ từ đó để tránh làm ô nhiễm phạm vi gốc. Bạn tạo một dịch vụ và làm cho nó có sẵn trong bộ điều khiển của bạn như thế này:
<!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>
Nếu đó không phải là một tùy chọn cho bạn, bạn có thể thêm nó vào phạm vi gốc như thế này:
<!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>
Bằng cách đó, tất cả các mẫu của bạn có thể gọi globalFoo()
mà không cần phải chuyển nó đến mẫu từ bộ điều khiển.
module.value('myFunc', function(a){return a;});
và sau đó tiêm nó theo tên trong bộ điều khiển của bạn. (Nếu ai đó muốn tránh thực hiện một dịch vụ)