自定义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 }
时间: 2024-11-08 19:07:42

自定义Angular服务的相关文章

angularjs自定义数据获取服务

自定义数据获取服务文件:server-http.js var m1 = angular.module('module1',[]); m1.config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.withCredentials = true; //设定Cookie支持 // Use x-www-form-urlencoded Content-Type $httpProvider.defaults.head

自定义Window 服务

自定义window 服务 开发到使用的流程: 1.完成对应的代码之后(代码在底下),右键MyService.cs 添加安装程序 2.添加window服务安装程序打开Service1.cs[设计]页面,点击右键,选择[添加安装程序],会出现serviceInstaller1和serviceProcessInstaller1两个组件将serviceProcessInstaller1的Account属性设为[LocalSystem], serviceInstaller1的StartType属性设为[A

?创业者福利 2015创新中国 创业邦公开课 孵化培训 免费报道 APP下载 降价?开始而已:UPYUN CDN 首推自定义 SSL 服务

5月底的云 CDN "降价大战"硝烟落定,总部位于杭州的 UPYUN 用 27.5% 的国内业界史上最大降幅,并与阿里云.腾讯云一起完成了云 CDN 阵营对传统 CDN 阵营的一次集体挑战. 6月15日,UPYUN 宣布推出全节点自定义 SSL 服务--用户可以上传自己的 SSL 证书到 UPYUN ,并管理自定义域名的 HTTPS 访问,同时,UPYUN CDN SSL 服务默认开启了对 SPDY/3.1 的支持,SPDY 协议通过对请求进行压缩.优先级排列和多路复用,从而降低网页的

angular 服务 service factory provider constant value

angular服务 服务是对公共代码的抽象,由于依赖注入的要求,服务都是单例的,这样我们才能到处注入它们,而不用去管理它们的生命周期. angular的服务有以下几种类型: 常量(Constant): 用于声明不会被修改的值. 变量(Value): 用于声明会被修改的值. 服务(Service): 这个名称跟服务这个大概念同名,就种行为就像是给自己孩子取名为"孩子".只需要创建这个服务,然后等angular把它new出来,保存这个服务,然后就可以到处注入了. 工厂(Factory): 

自定义Angular插件 - 网站用户引导

最近由于项目进行了较大的改版,为了让用户能够适应这次新的改版,因此在系统中引入了“用户引导”功能,对于初次进入系统的用户一些简单的使用培训training.对于大多数网站来说,这是一个很常见的功能.所以在开发这个任务之前,博主尝试将其抽象化,独立于现有系统的业务逻辑,将其封装为一个通用的插件,使得代码更容易扩展和维护. 无图无真相,先上图: 关于这款trainning插件的使用很简单,它采用了类似Angular路由一样的配置,只需要简单的配置其每一步training信息. title:step的

SharePoint下自定义WFC服务

同事忙不过来,呼叫我支援做一个关于项目的展现页面,项目可以嵌套. 打算采用js + 服务模式做. 为什么采取这种模式, 原因之一,第三方的数据库,不是SharePoint列表, 第二,POC这种修改比较平凡的东西,做好服务后,就可以采取前端模板随意玩. 至于前端模板,可以用backbone, Angular这种等,也可以采用Jquery插件, easyui这种,还可以 react,jsrender这种轻量级的View. 然后兴致勃勃的开始了,一开始发现, What? 数据库没有主键 , 大家也知

自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选&多选下拉框

先说点闲话,熟悉Angular的猿们会喜欢这个插件的. 00.本末倒置 不得不承认我是一个喜欢本末倒置的人,学生时代就喜欢先把晚交的作业先做,留着马上就要交的作业不做,然后慢悠悠做完不重要的作业,卧槽,XX作业马上要交了,赶紧补补补.如今做这个项目,因为没找到合适的多选下拉Web插件,又不想用html自带的丑陋的<select multiple></select>,自己花了一整天时间做了一个.或许这样占用的主要功能开发的时间,开发起来会更有紧迫感吧.感觉自己是个抖M自虐倾向,并且伴

自定义Filter服务

自定义一个用户Email长度超过12个字符后值截取前12个然后添加“...”显示. 例如: index.html <!DOCTYPE html> <html ng-app="myApp"> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" cont

angular 服务

在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器)才会被清除.而controllers在不需要的时候就会被销毁了.服务用于在控制器之间进行共享,用的时候只要把服务注入到控制器就可以了. provider(name,object) provider(name,constroctor) factory(name,$getFunction) service(name,constroctor()) 例子: 用factory创建服务 在ser