AngularJS 中的服务是一个函数或对象。可以创建自己的服务,或使用内建服务。
内置服务
AngularJS 内建了30 多个服务。
1、 $location 服务,它可以返回当前页面的 URL 地址。
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
注意 $location 服务是作为一个参数传递到 controller 中。如果要使用它,需要在 controller 中定义。
2、 $http 是 AngularJS 应用中最常用的服务。 服务向服务器发送请求,应用响应服务器传送过来的数据。可直接同外部进行通信。
$http 服务只是简单的封装了浏览器原生的 XMLHttpRequest 对象。
$http.get(url) 是用于读取服务器数据的函数。
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
3、$timeout 服务对应了 JS window.setTimeout 函数
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
4、 $interval 服务对应了 JS window.setInterval 函数。
创建自定义服务
创建名为hexafy 的服务(将一个数字转换为16进制数):
app.service('hexafy', function() {
this.myFunc = function (x) {
return x.toString(16);
}
});
此服务【名字是hexafy】有个函数myFunc(x) 参数是x。
当你创建了自定义服务,并连接到你的应用上后,你可以在控制器,指令,过滤器或其他服务中使用它。
要使用自定义的访问,需要在定义控制器[或其他]的时候独立添加:
app.controller('myCtrl', function($scope, hexafy) {
$scope.hex = hexafy.myFunc(255);
});