Angular内置了很多服务,比如和浏览器地址栏交互的$location服务,和服务器进行交互的$http服务

自然自己也可以自定义服务。

使用服务可以很好的在多个Angular控制器之间进行交互和共享状态,因此自己创建符合当前需要的服务往往可以使效率事半功倍。

如何创建Angular服务?

Angular提供了模型对象的API来定义服务,一下三个函数可以用来创建一般的服务

函数                        定义

provider(name,Object or constructor())      一个可配置的服务,创建的逻辑比较复杂。如果你传递一个Object作为参数,

                          那么这个Object对象必须带有一个$get的函数,此函数需要返回服务的名称。

                          否则Angular会人物传递的是一个构造函数,调用构造函数会返回服务实例对象

factory(name,$get Function())           一个不可配置的服务,创建逻辑比较复杂。需要制定一个函数,当调用这个函

                          数的时候,会返回服务的实例。可以把它看成provider(name,{$get :$getfunction()})

                          的形式。

service(name,constructor())            一个不可配置的服务,创建逻辑比较简单,与上面provider函数的constructor

                          参数类似,Angular调用它可以创建服务实例。

provider

    provider中既绑定了factory也绑定了service,并且在注入系统准备完毕前,还可以享受到配置provider的好处

实例:

 1 var myApp=angular.module('myApp',[]);
 2 myApp.provider('greeter',function(){
 3     var salutation='Hello';
 4     this.setSalutation=function(s){
 5         salutation=s;
 6     }
 7
 8     function Greeter(a){
 9         this.greet=function(){
10             return salutation+' '+a;
11         }
12     }
13
14     this.$get=function(a){
15         return new Greeter(a);
16     };
17 });

factory

    如果有一个类或者对象,需要首先为它提供一些逻辑或者参数,然后才能对它初始化,那么可以使用factory接口。

实例

1 myApp.factory('greeter',function(salut){
2     return new Greeter(salut);
3 });
4
5 function Greeter(salutation){
6     this.greet=function(name){
7         return salutation+' '+name;
8     };
9 }

service

    factory和service之间不同点在于,service会直接调用传递给它的函数,然后返回执行结果;而factory会使用

    “new”关键字来调用传递给它的构造方法然后再返回结果

实例

1 myApp.factory('greeter',Greeter);
2
3 function Greeter(salutation){
4     this.greet=function(name){
5         return salutation+' '+name;
6     };
7 }

转载于:https://www.cnblogs.com/Bideam/p/5639263.html

自定义Angular服务相关推荐

  1. angular服务一

    angular服务 [$apply()] jquery内数据绑定 要用$apply(),不然不能在js内通过angular绑定数据 <!DOCTYPE html> <html lan ...

  2. centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务

    概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...

  3. angluar ajax实例,Angular服务Request异步请求的实例讲解

    首先这里我简单写个例子来方便您的理解 var request = { post: function() { var errorCallback = { error: function(f) { thi ...

  4. 关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题

    关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题 问题 我们知道在 systemd 取代了 init 而成为广大 Linux 系统中 PID 为 ...

  5. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  6. Kubernetes之配置与自定义DNS服务

    本文解释如何为kubernetes集群配置及自定义DNS服务.从kubernetes1.11版本开始,coreDNS插件被包含在GA发行版中,并且被kubeadm默认安装.详情:Configuring ...

  7. ARCGIS API for JS调用ARCGIS Server自定义布局打印服务

    发布ARCGIS Server自定义布局打印服务 1.打印服务 1.1 什么是PrintingTools 服务 1.2 自定义打印服务 1.2.1 什么是自定义打印服务 1.2.2 更新布局模板 1. ...

  8. 络达开发---自定义BLE服务(一):相关数据结构讲解

    平台:AB1565M SDK版本:V2.11.0 开发环境:windows10 一.BLE服务相关的几个结构定义 理解Airoha的SDK对BLE的支持,就必须要理解下面这些结构的功能,因为定义BLE ...

  9. 络达开发---自定义BLE服务(二):功能实现

    络达开发--自定义BLE服务(一) 一.目录和工程的配置 本文讲解如何在该SDK中添加用户自居定义的BLE服务.该服务的源码可以存放在自己希望的位置,但为符合工程目录的合理性,建议放在工程所在的目录下 ...

  10. idea 编写scala_在Scala中编写Angular服务

    idea 编写scala Those following my blog posts know that I like to take Scala everywhere. This time, let ...

最新文章

  1. Linux 学习之创建,删除文件和文件夹命令
  2. 【c#】Form调用百度地图api攻略及常见问题
  3. GDCM:gdcm::String的测试程序
  4. python批量上传 服务器_Python Tornado批量上传图片并显示功能
  5. HTML5学习笔记简明版(8):新增的全局属性
  6. 协议实现objective C 协议的实现
  7. NameError: name ‘List‘ is not defined
  8. python自带的shell、其性能优于ipython吗_根据强化的性质和目的可以分成()。 A.自然强化物和人为的近似强化物B.积极强化和消极...
  9. ASP.NET MVC 对于视图引擎的优化
  10. 排序算法----------堆排序
  11. mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
  12. 电脑重装系统虚拟机安装xp的教程
  13. 共享指定文件给指定电脑
  14. python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
  15. 解决nginx 503 Service Temporarily Unavailable 方法
  16. 清除COOKIES有什么好处
  17. 使用R语言实现的城市空气质量分析模型
  18. 供应链服务平台方案:助供应链服务公司实现商品+决策+物流+售后协同办公
  19. 力扣(145.102)补9.5
  20. 温哥华岛大学计算机科学,温哥华岛大学有几个校区?

热门文章

  1. Spark之UpdateStateByKey算子
  2. 蓝桥杯包子凑数-完全背包
  3. Servlet期末复习笔记3
  4. PrintStream 打印流、System 剖析、Java 16 进制转换
  5. java 单词倒序_【Java】单词倒序输出
  6. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_6 响应json数据之过滤静态资源...
  7. javaweb filter
  8. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
  9. 1023. Have Fun with Numbers (20)
  10. 手把手编写自己的PHP MVC框架实例教程