issues
search
viviyelg
/
myNotebook
用来存放学习中整理的笔记
0
stars
0
forks
source link
AngularJS factory、service和provider的区别
#1
Open
viviyelg
opened
7 years ago
viviyelg
commented
7 years ago
AngularJS service factory provider的比较
service
一般直接用
this
来操作数据、定义函数。
service()方法很适合使用在功能控制比较多的service()方法。
service定义的服务不能再.config中使用,只有provider定义的才可以
factory
一般是创建一个对象,然后再对这个对象添加方法和数据,最后将这些对象返回,然后注入到Controller层中即可。
一定要返回一个对象不然会报错
。
provider
$provide 服务负责告诉Angular 如何创造一个新的可注入的东西:即服务。服务会被交过provider的东西来定义,你可以使用$provide来创建一个provider。需要使用$provide中的provider()方法来定义一个provider,同时也可以通过要求$provide被注入到一个应用的config函数中来获得$provide服务。使用方法是返回一个$get函数,注意在config阶段,只有provider能被注入。
区别
用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了。
Service 是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service 返回"this"。你把 service 传进 controller 之后,在controller里 "this" 上的属性就可以通过 service 来使用了。
Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,那就应该用 provider。
Factory/service是第一个注入时才实例化,而provider不是,它是在config之前就已实例 化好
参考文档
跟我学AngularJs:Service、Factory、Provider依赖注入使用与区别
AngularJS service factory provider的比较
service
this
来操作数据、定义函数。factory
provider
区别
参考文档