写在前面

Value,Factory,Service和Constant,这4种都只语法糖。ng启动阶段是 config—>run—>compile/link 。

供应商($provide)

$provide中的provider()方法来定义一个供应商,供应商是用来提供服务的,被注入来注入去的东西就是供应商们提供的服务了。

AngularJS用$provide去定义一个供应商,这个$provide有5个用来创建供应商的方法:

  • constant
  • value
  • service
  • factory
  • provider

constant,value,service,factory 都是 provider 的语法糖,所有的供应商都只被实例化一次,也就说他们都是单例的。

  1. app.config(function ($provide) {
  2. $provide.constant('movieTitle', 'The Matrix');
  3. });

服务(service)

每次当你切换或刷新页面的时候,Angular 会清空当前的 controller。与此同时,service 可以用来永久保存应用的数据,并且这些数据可以在不同的 controller 之间使用。

  1. app.constant
  2. app.value
  3. app.service
  4. app.factory
  5. app.provider

上面是下面的语法糖

  1. $provider.constant
  2. $provider.value
  3. $provider.service
  4. $provider.factory

上面是下面的语法糖

  1. $provider.provider

app.provider 要提供一个 $get 函数,唯一的可以在你的控制器中访问的属性和方法是通过$get()函数返回内容。

factory和service

用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来,Service 是用”new”关键字实例化的。