angularJS 服务--$provide里factory、service方法_ide


服务提供了一种能在应用的整个生命周期内保持数据的方法,它可以在控制器之间进行通

信,而且能保证数据的一致性。

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>2、angularjs自己定义服务</title>
6 <script src="../js/angularjs.js"></script>
7 <script src="../js/index3.js"></script>
8
9 </head>
10 <body>
11 <!-- angularjs的数据绑定。双向绑定,M,V,c之间的绑定 -->
12
13
14 <div ng-app="myApp" ng-controller="firstController">
15 <input type="text" ng-model="name" value="" />
16 {{name}}
17 </div>
18
19
20 </body>
21 </html>


angularJS 服务--$provide里factory、service方法_ide


1、注冊一个服务

使用angular.module的factory API创建服务,是最常见也是最灵活的方式





1


2


3


4


5


6


7


8


9


10




​var myApp = angular.module('myApp', []);​


 


​myApp.service('service1', function(){​


​return [1,2,3,4,5,6];​


​});​


 


 


​myApp.factory('factory1', function(){​


​return "111";​


​});​



 2、使用服务

能够在控制器、指令、过滤器或另外一个服务中通过依赖声明的方式来使用服务。

AngularJS

会像平时一样在执行期自己主动处理实例化和依赖载入的相关事宜。



angularJS 服务--$provide里factory、service方法_ide

var myApp = angular.module('myApp', [] , function($provide){

// 1、通过$provide.provider自己定义服务
$provide.provider('provider',function(){
this.$get = function(){
return {
message: 'xiaoguoping'
}
}
});
//console.log(1);

$provide.provider('provider2',function(){
this.$get = function(){
return {
message: 'xiaoguoping2'
}
}
});




// 2、通过$provide.service自己定义服务
$provide.service('service1', function(){
return [1,2,3,4,5,6];
});
// 3、通过$provide.factory自己定义工厂
$provide.factory('factory1', function(){
return "111";
});

// myApp.service('service1', function(){
// return [1,2,3,4,5,6];
// });

// myApp.factory('factory1', function(){
// return "111";
// });
// 3、通过$provide.factory自己定义工厂
$provide.factory('factory1', function(){
return "111";
});

});
// 自己定义的服务均可被其它服务调用,入controller.
myApp.controller('firstController', function($scope , provider, provider2, service1, factory1){
$scope.name = '张三';
console.log(provider);
console.log(provider2);
console.log(service1);
console.log(factory1);
});在AngularJS应用中,factory()方法是用来注冊服务的最常规方式,同一时候还有其它一些AP能够在特定情况下帮助我们降低代码量。共同拥有5种方法用来创建服务:


angularJS 服务--$provide里factory、service方法_ide


 factory()----函数能够返回简单类型、函数乃至对象等随意类型的数据

 service()-----函数数组、对象等数据

 constant()----value()方法和constant()方法之间最基本的差别是,常量能够注入到配置函数中,而值不行。

 value()-----假设服务的$get方法返回的是一个常量,那就没要必要定义一个包括复杂功能的完整服务,能够通过value()函数方便地注冊服务。

 provider()----提供者是一个具有$get()方法的对象。$injector通过调用$get方法创建服务实例。