AngularJs基础——自定义服务的三种方法以及provider供应商
来源:互联网 发布:如何入侵网站修改数据 编辑:程序博客网 时间:2024/05/22 17:49
AngularJs提供了三种方法可以自定义服务,分别是provider、factory、service.请注意三者之间的区别。
有三种方式可以自定义服务:
第一种方式,在module中以回调函数的形式作为参数引入:
<!DOCTYPE html><html lang="zh_CN"><head> <meta charset="UTF-8"> <title>Angular基础</title></head><body><div ng-app="myApp"> <div ng-controller="firstCtrl"> {{name}} </div></div><script src="angular.min.js"></script><script type="application/javascript"> var myApp=angular.module('myApp',[],function($provide){ $provide.provider('providerService01',function(){ this.$get=function(){ return {message:'this is providerService01'}; } }); $provide.provider('providerService02',function(){ this.$get=function(){ return 'this is providerService02'; } }); $provide.factory('factoryService01',function(){ return {message:'this is factoryService01'}; }); $provide.factory('factoryService02',function(){ return 'this is factoryService02'; }); $provide.service('serviceService01',function(){ return {message:'this is serviceService01'}; }); }); myApp.controller('firstCtrl',['$scope','providerService01','providerService02','factoryService01','factoryService02','serviceService01',function( $scope,providerService01,providerService02,factoryService01,factoryService02,serviceService01){ console.log(providerService01); console.log(providerService02); console.log(factoryService01); console.log(factoryService02); console.log(serviceService01); $scope.name="张三"; }]);</script></body></html>第二种方式,用config方法引入:
<!DOCTYPE html><html lang="zh_CN"><head> <meta charset="UTF-8"> <title>Angular基础</title></head><body><div ng-app="myApp"> <div ng-controller="firstCtrl"> {{name}} </div></div><script src="angular.min.js"></script><script type="application/javascript"> var myApp=angular.module('myApp',[]); myApp.config(function($provide){ $provide.provider('providerService01',function(){ this.$get=function(){ return {message:'this is providerService01'}; } }); $provide.provider('providerService02',function(){ this.$get=function(){ var _name=""; var service={}; service.setName=function(name){ _name=name; } service.getName=function(){ return _name; } return service; } }); }); myApp.controller('firstCtrl',['$scope','providerService01','providerService02',function($scope,providerService01,providerService02){ console.log(providerService01); providerService02.setName("服务二"); $scope.name=providerService02.getName(); }]);</script></body></html>第三种方式,module调用各自的方法:
<!DOCTYPE html><html lang="zh_CN"><head> <meta charset="UTF-8"> <title>Angular基础</title></head><body><div ng-app="myApp"> <div ng-controller="firstCtrl"> {{name}} </div></div><script src="angular.min.js"></script><script type="application/javascript"> var myApp=angular.module('myApp',[]); myApp.provider('providerService01',function(){ this.$get=function(){ return {message:'this is providerService01'}; } }); myApp.factory('factoryService01',function(){ return {message:'this is factoryService01'}; }); myApp.service('serviceService01',function(){ return {message:'this is serviceService01'}; }); myApp.controller('firstCtrl',['$scope','providerService01','factoryService01','serviceService01',function( $scope,providerService01,factoryService01,serviceService01){ console.log(providerService01); console.log(factoryService01); console.log(serviceService01); $scope.name="张三"; }]);</script></body></html>
Provider、Factory、Service三者之间的区别是:
Provider是唯一一种可以传进.config()函数的service.当你想要在service对象启用之前,先进行模块范围的配置,那就应该用provider。
Factory是直接把一个函数当成一个对象的$get方法,可以直接返回字符串。用factory就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把service传进controller之后,在controller里这个对象里的属性就可以通过factory使用了。
Service是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后service返回"this"。你把service传进controller之后,在controller里"this"上的属性就可以通过service来使用了。
<!DOCTYPE html><html lang="zh_CN"><head> <meta charset="UTF-8"> <title>Angular基础</title></head><body><div ng-app="myApp"> <div ng-controller="firstCtrl"> {{name}}<br/> ##name## </div></div><script src="angular.min.js"></script><script type="application/javascript"> var myApp=angular.module('myApp',[]); myApp.config(['providerService01Provider','$interpolateProvider',function(providerService01Provider,$interpolateProvider){ providerService01Provider.name="李四"; providerService01Provider.age=25; //用$interpolateProvider改变数据绑定的方式 $interpolateProvider.startSymbol('##'); $interpolateProvider.endSymbol('##'); }]); myApp.provider('providerService01',function(){ //可以在config里配置的属性 this.name=""; this.age=""; this.$get=function(){ var that=this; var _name=""; var service={}; service.setName=function(name){ _name=name; }; service.getName=function(){ return _name; }; service.getConfigName=function(){ return that.name+',age:'+that.age; } return service; } }); myApp.factory('factoryService01',function(){ var _name=""; var service={}; service.setName=function(name){ _name=name; }; service.getName=function(){ return _name; }; return service; }); myApp.service('serviceService01',function(){ var _name=""; this.setName=function(name){ _name=name; }; this.getName=function(){ return _name; } }); myApp.controller('firstCtrl',['$scope','providerService01','factoryService01','serviceService01',function( $scope,providerService01,factoryService01,serviceService01){ console.log(providerService01); console.log(providerService01.getConfigName()); console.log(factoryService01); console.log(serviceService01); $scope.name="张三"; }]); </script></body></html>
0 0
- AngularJs基础——自定义服务的三种方法以及provider供应商
- AngularJs基础——自定义服务的三种方法以及provider供应商
- Angularjs自定义服务~使用Module的provider方法
- 深究AngularJS——自定义服务详解(factory、service、provider)
- 深究AngularJS——自定义服务详解(factory、service、provider)
- 深究AngularJS——自定义服务详解(factory、service、provider)
- 深究AngularJS——自定义服务详解(factory、service、provider)
- 深究AngularJS——自定义服务详解(factory、service、provider)
- angularJs中service的三种方法以及区别(factory,service,provider三者的区别)
- angularJs中service的三种方法以及区别(factory,service,provider三者的区别)
- AngularJS的自定义服务,factory、provider、service、constant、value等方法的区别
- angularJS自定义服务的两种方法
- angularjs factory,service,provider 自定义服务的不同
- AngularJS 服务层的三种创建方式(provider,factory,service)
- 《AngularJS》------自定义服务 provider、service、factory
- angularJs自定义服务(factory,service,provider)
- angularjs自定义供应商
- AngularJS--自定义服务的三种方式用法总结
- squid,nginx,lighttpd反向代理的区别
- Java——多态
- iOS UIView动画详解(Objective-C)
- jmeter学习 二
- putty访问openssh 6.6.1访问拒绝
- AngularJs基础——自定义服务的三种方法以及provider供应商
- lightning mdb 源代码分析(5)-事务控制
- 如何用cmd命令控制mysql数据库
- 第十个项目
- Android学习笔记--ListView的三种使用方式
- Isomap等距映射算法(1)
- 数据库第五章理论总结
- JavaScript设计模式 --- 封装和信息隐藏
- Webkit内核探究【1】——Webkit简介