Angular自定义服务

3种创建自定义服务的方式。

1、Factory
2、Service
3、Provider

在自定义服务里注入服务示例,但不能注入$scope作用域对象。

factory

factory方式创建的服务,作用就是返回一个有属性有方法的对象。相当于:var f = myFactory();

    var app = angular.module('myApp', []);
//通过工厂模式创建自定义服务 app.factory('myFactory', function() { var service = {};//定义一个Object对象' service.name = "张三"; var age;//定义一个私有化的变量 //对私有属性写getter和setter方法 service.setAge = function(newAge){ age = newAge; } service.getAge = function(){ return age; } return service;//返回这个Object对象 }); //创建控制器 回调函数把自定义服务return的对象作为参数传入 可以把他的值作为$scope的一个属性 用于view中 app.controller('myCtrl', function($scope, myFactory) { myFactory.setAge(20); $scope.r =myFactory.getAge(); alert(myFactory.name); });

service

通过service方式创建自定义服务,相当于new的一个对象:var s = new myService();,只要把属性和方法添加到this上才可以在controller里调用。

{{r}}

provder

只有provder是能传 .config() 函数的 service。如果想在 service 对象启用之前,先进行模块范围的配置,那就应该选择 provider。需要注意的是:在config函数里注入provider时,名字应该是:providerName+Provider.
使用Provider的优点就是,你可以在Provider对象传递到应用程序的其他部分之前在app.config函数中对其进行修改。
当你使用Provider创建一个service时,唯一的可以在你的控制器中访问的属性和方法是通过$get()函数返回内容


你可能感兴趣的:(Angular自定义服务)