factory()方法:
是创建 和配置服务的最 快捷的方式
factory()函数可以接受两个参数:
name 字符串 :需要注册的服务名
函数function:函数会在angularJS创建服务的实例时被调用,返回对象
angular机制出于内存占用和性能的考虑,
控制器只会在需要的时候被 实例化,不需要的时候就会被销毁
服务需要时才会被实例化,但是它是单例对象,不会被销毁
服务的定义:
服务提供了一种能够在应用的整个生命周期内保持数据的方法,
它能够在控制器之间进行通信,并且能保持数据的一致性
服务提供了把与特点功能相关联的方法集中在一起,变成一个接口供你调用
其实服务的作用用一句话说就是:处理某个特殊的功能的函数接口(API)
服务是一个单例对象,在每个应用中只会被实例化一次 是被$injector实例化,并且延迟加载
什么意思:就是需要的时候才被 实例化
angularJS提供了一些自己封装好的服务,比如:$http,
我们自己创建的服务也是非常有用的,实现特定的功能
在angularJS中,创建服务,首先需要的是注册,服务注册之后,angularJS就可以在编译的时候引用它,在需要的时候才会实例化它,在运行的时候把它作为依赖加入进去,
再次回到factory()方法:举个例子,现在我们需要建立一个硬数据:
var app = angular.module('myApp',[]);
app.factory('myData',function(){
return {
username:'auser'
};
});
上面这个代码块的意思其实很简单,我们注册了一个服务,名称叫做,myData ,它是一个对象,它里面有一个叫做username的属性,这个属性被我们赋值auser ,然后这个服务,可以在app管理的所有的控制器里面被访问,还有很多地方可以被使用,具体就不说了,
因为服务是单例对象,function函数只可能被调用一次,这个函数是带有参数的,也就是可以有注入依赖,什么意思,就是我们自己定义的服务,它的业务逻辑实现是需要其他的方法或者服务提供帮助,这就叫依赖的简单理解,
这个function的参数可以是函数,可以是数组,等,举个例子说:
依赖其实可以理解为 为了实现我们特点的业务逻辑 而需要 使用到的 资源
依赖某种意思上说 就是一种资源
var app = angular.module('myApp',[]);
app.factory('myData',['$http',function($http){
return {
//这里我们可以利用$http 这个服务去访问网络数据了,
username:'auser'
};
}]);
上面的形式你可以看见,我们使用的方式是这样的,factory(服务名,[依赖1,依赖2,function(参数1,参数2)])
其中参数1,参数2就分别对应了依赖1,依赖2,注意它是按照顺序一一对应的,
它的意思就是:表示有一个函数,它依赖两个东西,然后这两个东西会依次作为参数传入
当然上面的方式还可以更简单点写:
var app = angular.module('myApp',[]);
app.factory('myData',function($http){
return {
//这里我们可以利用$http 这个服务去访问网络数据了,
username:'auser'
};
});
这种写法也是对的,因为$http服务是angularJS自带的