您的位置:首页 > Web前端 > AngularJS

AngularJs自定义服务(二)

2016-01-28 09:05 555 查看
AngularJs中框架的所有服务都是单例对象。

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