21.自定义服务

转自:https://www.cnblogs.com/best/tag/Angular/

自定义服务

AngularJS在内置服务中提供了大量的功能,不过这些服务不一定能满足你的需求,你可以通过自定义服务解决。可以将服务看作一个或多个相关任务的一块可重用代码。

创建自定义服务有4种主要类型:value,constant,factory,service

1.2.1、创建value服务

定义单个值的简单服务,模块的配置阶段是不可以使用的。
module.value('key',{color:'blue',value:'17'})

1.2.2、创建constant服务

也value服务一样,不过在模块的配置阶段是可以使和的。

module.value(“key”,”value”);

1.2.3、创建factory服务

提供了把功能实现到服务中的能力。

也可以把其它服务注入到factory中。

1.2.4、创建Service服务

factory是普通function,而service是一个构造器(constructor),这样Angular在调用service时会用new关键字,而调用factory时只是调用普通的function,所以factory可以返回任何东西,而service可以不返回

示例代码:

 1 <!DOCTYPE html>
 2 <!--指定angular管理的范围-->
 3 <html ng-app="app01">
 4     <head>
 5         <meta charset="UTF-8">
 6         <title>服务</title>
 7     </head>
 8     <body>
 9         <!--指定控制器的作用范围-->
10         <form ng-controller="Controller1" name="form1">
11             <p>
12                 半径:<input ng-model="r" ng-init="r=1"/>
13             </p>
14             <p>
15                 周长:{{circleLength}}
16             </p>
17             <p>
18                 面积:{{circleArea}}
19             </p>
20         </form>
21         <!--引入angularjs框架-->
22         <script src="js/angular146/angular.min.js" type="text/javascript" charset="utf-8"></script>
23         <script type="text/javascript">
24             //定义模块,指定依赖项为空
25             var app01 = angular.module("app01", []);
26             
27             //value服务
28             app01.value("i",100);
29             
30             //constant服务
31             app01.constant("PI",3.14);
32             
33             //factory服务
34             app01.factory("getArea",['i','PI',function(i,PI){
35                 return function(radius){
36                     return PI*(radius+i)*(radius+i);
37                 };
38             }])
39             
40             function circleMethod(i,PI,getArea){
41                 this.getLength=function(radius){
42                     return 2*PI*radius;
43                 };
44                 this.getSize=function(radius){
45                     return getArea(radius);
46                 }
47             }
48             //service服务
49             app01.service("circleService",circleMethod);
50             
51             //定义控制器,指定控制器的名称,$scope是全局对象
52             app01.controller("Controller1", function($scope,circleService) {
53                 $scope.$watch("r",function(){
54                     $scope.circleLength=circleService.getLength($scope.r);
55                     $scope.circleArea=circleService.getSize($scope.r);
56                 });
57             });
58         </script>
59     </body>
60 </html>

运行结果:

 

转载于:https://www.cnblogs.com/sharpest/p/8134111.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值