在AngularJS中创建自定义服务

1,创建value服务

    你可以使用非常简单的value服务来定义你可以作为服务提供器注入的单个值。value方法使用下面的语法,其中name是服务名称,object是你想要提供的任何JavaScript对象:

        value(name,object)  或者

var app = angular.module('myApp',[]);
app.value('myValue',{color:'blue',value:'17'})

2,创建constant服务

    constant服务与value服务是基本相同的,不同的是,constant服务在构建module对象的配置阶段可用,而value服务不是。constant方法使用下面的语法,其中name是服务名称,object是你想要提供的任何JavaScript对象。

    constant(name,object) 或者

var app = angular.module('myApp',[]);
app.constant('myValue',{color:'blue',value:'17'});

3,创建factory服务

    factory提供了把功能实现到服务中的能力。它也可用依赖于其他服务提供器,让你建立条块分离的代码。factory方法使用下面的语法,其中name是服务名而factoryProvider是建立工厂服务的提供器函数:

    factory(name,factoryProvider)

    你可用使用其他服务注入factory方法,它返回一个相应功能的服务对象。这里功能可以是一个复杂的JavaScript服务,值,或一个简单的函数。例如,下面的代码实现一个factory服务,它返回一个将两个数字相乘的函数:

var app = angular.module('myApp',[]);
app.constant('myConst',10);
app.factory('multiplier',['myConst',function(myConst){
	return function(value){
		return value*myConst;
	}]);

4,创建service服务

    service方法提供把功能实现到一个服务中的能力。但是,service方法的工作原理与factory方法略有不同。service方法接受一个构造函数作为第二个参数,并使用它来创建一个对象的新实例。service方法使用下面的语法,其中name是服务名,而constructor是一个构造函数:

    service(name,constructor)

    service方法也可以接受依赖注入。下面的代码实现了一个基本的service方法,这提供了一个add()函数和multiply()函数:

var app = angular.module('myApp',[]);
app.constant('myConst',10);
function ConstMathObj(myConst){
	this.add = function(value){ return value + myConst; };
	this.multiply = function(value){ return value * myConst; };
}
app.service('constMath',['myConst',ConstMathObj]);

    请注意,ConstMathObj构造函数首先被创建,然后service()方法调用它,并使用依赖注入来插入myConst服务。

5,把服务集成在一个模块中

    下面的代码清单显示了吧vaue,constant,factory和service服务集成到单个模块中的例子。

var app = angular.module('myApp',[]);
app.value('censorWords',['bad','mad','sad']);
app.constant('repString',"****");
app.factory('censorF',['censorWords','repString',function(cWords,repString){
	return function(inString){
		var outString = inString;
		for(i in cWords){
			outString = outString.replace(cWords[i],repString);
		}
		return outString;
	};
}]);
function CensorObj(cWords,repString){
	this.censor = function(inString){
		var outString = inString;
		for(i in cWords){
			outString = outString.replace(cWords[i],repString);
		}
		return outString;
	};
}
app.servie('censorF',['censorWords','repString',CensorObj]);
app.controller('mControler',['$scope','censorF','censorS',function($scope,censorF,censorS){
	$scope.censoredByFactory = censorF("mad text");
	$scope.censoredByService = censorS.censor("bad text");
}]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值