自定义Angular服务
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服务相关推荐
- angular服务一
angular服务 [$apply()] jquery内数据绑定 要用$apply(),不然不能在js内通过angular绑定数据 <!DOCTYPE html> <html lan ...
- centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务
概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...
- angluar ajax实例,Angular服务Request异步请求的实例讲解
首先这里我简单写个例子来方便您的理解 var request = { post: function() { var errorCallback = { error: function(f) { thi ...
- 关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题
关于ubuntu自定义service服务时找不到/usr/lib/systemd/system目录的问题 问题 我们知道在 systemd 取代了 init 而成为广大 Linux 系统中 PID 为 ...
- SharePoint 2013 中自定义WCF服务
在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...
- Kubernetes之配置与自定义DNS服务
本文解释如何为kubernetes集群配置及自定义DNS服务.从kubernetes1.11版本开始,coreDNS插件被包含在GA发行版中,并且被kubeadm默认安装.详情:Configuring ...
- ARCGIS API for JS调用ARCGIS Server自定义布局打印服务
发布ARCGIS Server自定义布局打印服务 1.打印服务 1.1 什么是PrintingTools 服务 1.2 自定义打印服务 1.2.1 什么是自定义打印服务 1.2.2 更新布局模板 1. ...
- 络达开发---自定义BLE服务(一):相关数据结构讲解
平台:AB1565M SDK版本:V2.11.0 开发环境:windows10 一.BLE服务相关的几个结构定义 理解Airoha的SDK对BLE的支持,就必须要理解下面这些结构的功能,因为定义BLE ...
- 络达开发---自定义BLE服务(二):功能实现
络达开发--自定义BLE服务(一) 一.目录和工程的配置 本文讲解如何在该SDK中添加用户自居定义的BLE服务.该服务的源码可以存放在自己希望的位置,但为符合工程目录的合理性,建议放在工程所在的目录下 ...
- idea 编写scala_在Scala中编写Angular服务
idea 编写scala Those following my blog posts know that I like to take Scala everywhere. This time, let ...
最新文章
- Linux 学习之创建,删除文件和文件夹命令
- 【c#】Form调用百度地图api攻略及常见问题
- GDCM:gdcm::String的测试程序
- python批量上传 服务器_Python Tornado批量上传图片并显示功能
- HTML5学习笔记简明版(8):新增的全局属性
- 协议实现objective C 协议的实现
- NameError: name ‘List‘ is not defined
- python自带的shell、其性能优于ipython吗_根据强化的性质和目的可以分成()。 A.自然强化物和人为的近似强化物B.积极强化和消极...
- ASP.NET MVC 对于视图引擎的优化
- 排序算法----------堆排序
- mock教程 java_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
- 电脑重装系统虚拟机安装xp的教程
- 共享指定文件给指定电脑
- python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
- 解决nginx 503 Service Temporarily Unavailable 方法
- 清除COOKIES有什么好处
- 使用R语言实现的城市空气质量分析模型
- 供应链服务平台方案:助供应链服务公司实现商品+决策+物流+售后协同办公
- 力扣(145.102)补9.5
- 温哥华岛大学计算机科学,温哥华岛大学有几个校区?
热门文章
- Spark之UpdateStateByKey算子
- 蓝桥杯包子凑数-完全背包
- Servlet期末复习笔记3
- PrintStream 打印流、System 剖析、Java 16 进制转换
- java 单词倒序_【Java】单词倒序输出
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_6 响应json数据之过滤静态资源...
- javaweb filter
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
- 1023. Have Fun with Numbers (20)
- 手把手编写自己的PHP MVC框架实例教程