AngularJs自定义服务(二)
2016-01-28 09:05
555 查看
AngularJs中框架的所有服务都是单例对象。
value
经常被用在一个指令上面,用来保存值但不能对值进行计算,可以用angular.extend(valuename,{值名: 值})来改变value服务。value服务分为两部分:
name(字符串)
注册的服务名。
value(值)
将这个值将作为可以注入的实例返回。
constant
用来在指令中提供默认配置,但放入其中的值不会改变,因此基本上是一个基本类型的值或者是一个对象。其定义方法与value类似。
constant与value最主要的区别:常量可以注入到配置函数中,而值不行。
也就是constant定义的常量可以在config()中配置,而value定义的则无法访问。通常情况下,用value来注册服务对象或函数,constant来配置数据。
factory
factory为自定义工厂,是注册服务的最常规方式,它可返回任何对象,包括基本的数据类型。
name(字符串)
注册的服务名。
getFn
这个函数会在AngularJS创建服务实例时被调用。
provider
所有创建服务的方法都构建在provider方法之上。provider()方法负责在$providerCache中注册服务。
从技术上说,当我们假定传入的函数就是$get()时,factory()函数就是用provider()方法注册服务的简略形式。
如果需要AngularJs中的config()函数来对服务进行额外的扩展配置时,必须使用provider服务,它可在config()中配置特殊的值。
service
service服务返回的必须是对象,不能为基本数据类型。接受一个构造器,会自动运行new()来实例化一个对象,如果其他地方也有使用,则返回的为同一个对象。
value
经常被用在一个指令上面,用来保存值但不能对值进行计算,可以用angular.extend(valuename,{值名: 值})来改变value服务。value服务分为两部分:
name(字符串)
注册的服务名。
value(值)
将这个值将作为可以注入的实例返回。
var app=angular.module('App',[]); //返回一个值 app.value("name","crystal"); //返回一个函数 app.value("name",function(){ alert("返回函数"); })
constant
用来在指令中提供默认配置,但放入其中的值不会改变,因此基本上是一个基本类型的值或者是一个对象。其定义方法与value类似。
var app=angular.module('App',[]); app.constant("name","crystal");
constant与value最主要的区别:常量可以注入到配置函数中,而值不行。
也就是constant定义的常量可以在config()中配置,而value定义的则无法访问。通常情况下,用value来注册服务对象或函数,constant来配置数据。
angular.module('myApp', []) .constant('apiKey', '123123123') .config(function(apiKey) { // 在这里apiKey将被赋值为123123123 // 就像上面设置的那样 }) .value('FBid','231231231') .config(function(FBid) { // 这将抛出一个错误,未知的provider: FBid // 因为在config函数内部无法访问这个值 });
factory
factory为自定义工厂,是注册服务的最常规方式,它可返回任何对象,包括基本的数据类型。
name(字符串)
注册的服务名。
getFn
这个函数会在AngularJS创建服务实例时被调用。
angular.module('myApp') .factory('githubService', ['$http', function($http) { return { getUserEvents: function(username) { // ... } }; }]);
provider
所有创建服务的方法都构建在provider方法之上。provider()方法负责在$providerCache中注册服务。
从技术上说,当我们假定传入的函数就是$get()时,factory()函数就是用provider()方法注册服务的简略形式。
如果需要AngularJs中的config()函数来对服务进行额外的扩展配置时,必须使用provider服务,它可在config()中配置特殊的值。
angular.module('myApp', []) .config(function(githubServiceProvider) { githubServiceProvider.setGithubUrl("git@github.com"); });
service
service服务返回的必须是对象,不能为基本数据类型。接受一个构造器,会自动运行new()来实例化一个对象,如果其他地方也有使用,则返回的为同一个对象。
var Person = function($http) { this.getName = function() { return $http({ method: 'GET', url: '/api/user'}); }; }; angular.service('personService', Person);
相关文章推荐
- AngularJS基础教程之简单介绍
- angularJS 中$attrs方法使用指南
- 简述AngularJS相关的一些编程思想
- AngularJS的一些基本样式初窥
- 创建你的第一个AngularJS应用的方法
- 详解AngularJS中的作用域
- 简介AngularJS的视图功能应用
- AngularJS语法详解
- AngualrJS中的Directive制作一个菜单
- angularJS与bootstrap结合实现动态加载弹出提示内容
- AngularJS实现全选反选功能
- angularjs中的e2e测试实例
- 简介AngularJS中使用factory和service的方法
- AngularJS中监视Scope变量以及外部调用Scope方法
- AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
- 举例讲解AngularJS中的模块
- 使用AngularJS处理单选框和复选框的简单方法
- AngularJS+Node.js实现在线聊天室
- 快速学习AngularJs HTTP响应拦截器
- 浅析AngularJs HTTP响应拦截器