一、什么是服务
Angular 服务是为web应用执行特定任务的单例对象或方法。简而言之,就是controller共用的函数。
在其他语言中如java便有这样的概念,其作用就是对外提供某个特定的功能,如消息服务,文件压缩服务等,是一个独立的模块。ng的服务是这样定义的:
Angular services are singletons objects or functions that carry out specific tasks common to web apps.
因为我们一般不复用controller,这就需要抽象出一个公共的方法来为controller提供复用
Services都是单例的,就是说在一个应用中,每一个Serice对象只会被实例化一次(用$injector服务),主要负责提供一个接口把特定函数需要的方法放在一起,使用时候,我们不需要创建他,只需要将它注入到controller,其他服务或者指令中即可。
二、AngularJS内置的服务
ng提供了很多内置的服务,可以到API中查看 http://docs.angularjs.org/api/
例如$location,$resource,$scope
三、自定义服务
使用module来创建, 常用的有3种创建方式 provider,service,factory
1.factory方式
步骤一:定义服务
service.js
var myservice = angular.module('myservice',[]); //申明一个module模块
myservice.factory('factorytest',function($window){ //直接.facotry创建,有2个参数,1.服务名 2.服务执行的函数
var test = { //服务中定义一些属性等
firstname:'zhang',
lastname:function(){
return '三';
}
};
return test; //服务返回值
}).factory('foo', function() { //多个服务可以接着用.factory
var thisIsPrivate = "Private";
function getPrivate() { //服务中还可一定义一些函数
return thisIsPrivate;
}
return {
variable: "This is public",
getPrivate: getPrivate
};
});
步骤二: 使用服务
var myapp = angular.module('myapp',['myservice']); //依赖注入模块
myapp.controller('testservice',function($scope,factorytest){ //注入服务
alert(factorytest.firstname +" "+ factorytest.lastname());
});
2.provider
3.service