Angular 提供了几种方法来创建并注册我们自己的 service。
- factory
- service
- provider
- value
我们首先来创建一个module(模块),本文中的所有代码都会用到这个myModule。
var myModule = angular.module( "myModule", [] );
- 用 factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。
//第一种写法(常用) myModule.factory('greeting',function(){ var service = {}; service.greetingFun = function(name){ alert('hello '+name); } return service; }) //第二种写法 myModule.factory('greeting',function(){ return function(name){ alert('hello '+name); } })
2. service 是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service 返回"this"。
myModule.service('greeting',function(){ this.greetingFun = function(name){ alert('hello '+name); } });
3. provider 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,那就应该用 provider。当 myModule.config()修改配置项时:无论何时你为一个服务定义了一个provider,这个provider的名字都是serviceProvider。在这里service是服务的名字。
myModule.provider('greeting',function(){ //可在此处定义变量或函数,即myModule.config()函数可以访问、修改。 //$get内则不可以,只能用于控制器访问。 //此处为provider与factory和service的区别。 this.$get = function(){ return function(name){ alert('hello '+name); } } })
4. value 值是简单的JavaScript对象
myModule.value('greeting',function(name){ alert('hello '+name); })
详细解释