有以下5中方法注册一个AngularJS可以识别的Service

value和constant是两个极其简单的方法,只有少数情况下会使用。 service已经开始复杂了起来。而factory是我认为既简单又有足够灵活的度的方法。最后的provide是最复杂的方法,其他方法都是provide的特殊情况下的简化。

另外AngularJS中注册的Service都是单例的。

1.Constant
这是最简单的方法,只是注册了一个常量。在以后的程序中,主要注入了‘MAX_LEN’, 那么就可以使用

module.constant('MAX_LEN',10);module.service('service1',['MAX_LEN',function(MAX_LEN){  console.log(MAX_LEN)  //控制台会打印出 10.}]);

2.Values
   这个也比较简单,单纯注册一个类,这个类没有其他依赖

module.value('myservice',new MyService());

3.Service

module.service('myjob',['myservice',function(){myservice.work();
}]);

4.Factories

这是比较灵活又不失简单的方法。 注册一个工厂方法给AngularJS。使用myjob时,AngularJS会调用这个工厂方法来生成我们需要的对象:就是最后return的对象(他可以是任意合法的javascript对象)。

下面的例子中返回的是一个带3个方法的对象。使用是直接用 myjob.push() , myjob.put(), myjob.get()...调用。

module.factory('myjob',['myservice',function(myservice){  ...return {push:function(){},put:function(){},get:function(){},.....};
}]);

5.Providers.
上面所有方法其实都是provide的一个特例。provide仍然是注册一个工厂方法。这个工厂方法必须返回一个带有$get方法的对象。而$get方法其实也是一个工厂方法。它返回的就是我们需要的对象。下面的例子中myjob其实带有三个方法push,put,get, 我们可以在以后随意使用。但是可以看到还有一个 setMinLen方法,它与$get方法同级。如何调用就牵涉到module的生命周期了。

module.provide('myjob',function(){var config={minLen:10};return {setMinLen:function(minLen){config.minLen=minLen||config.minLen;},$get:function(myservice,MAX_LEN){return {push:function(){},put:function(){if(10<config.minLen)...},get:function(){},};}};});

Modules 生命周期
AngularJS中module要起作用必须经过两个阶段
    1. The configuration phase: 这个阶段收集所以经过provide注册的服务,并进行前期的配置。上面的setMinLen就可以在这个阶段调用。
    2. The run phase: It is the phase where we can execute any post-instantiaation logic.这个阶段才有$scope的概念。
    
The configuration phase: 这是依赖的不是服务,而是服务的provider,所以方法参数都是服务名加Provider的后缀

    module.config(function(myjobProvider){myjobProvider.setMinLen(20);});

The run phase:

    module.run(function($rootScope){$rootScope.appStarted=new Date();});

转载于:https://www.cnblogs.com/formyjava/p/4166314.html

AngularJs(Part 3)--注册服务相关推荐

  1. 为 Kerberos 连接注册服务主体名称

    为 Kerberos 连接注册服务主体名称 SQL Server 2012 引自:http://technet.microsoft.com/zh-cn/library/ms191153.aspx 若要 ...

  2. 注册服务(addService)

    一.概述 1.1 media服务注册 media入口函数是main_mediaserver.cpp中的main()方法,代码如下: 过程说明: 获取ServiceManager: 讲解了default ...

  3. Consul入门03 - 注册服务

    在前面的步骤,我们运行了第一个代理,看到了集群的成员,并且查询了节点信息.在这篇指南里,我们将注册我们第一个服务并且查询这个服务. 定义一个服务 一个服务能够通过提供一个服务定义或者调用适当的HTTP ...

  4. linux 查询注册服务,window下注册服务的命令小结

    1. 描述:     SC 是用于与服务控制管理器通信的命令行程序 . 用法: sc [command] [service name] ... 选项 的格式为 可以键入 "sc [comma ...

  5. Dubbo使用Zooker注册服务

    一.安装配置Zooker 1.下载Zooker 在apache mirros上下载Zooker :https://mirror.bit.edu.cn/apache/zookeeper/,下载后解压到指 ...

  6. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  7. Windows安装Apache注册服务出现(OS 5)拒绝访问。 : AH00369: Failed to open the Windows service manager,

    windows安装Apache,注册服务出现"(OS 5)拒绝访问. : AH00369: Failed to open the WinNT service manager..." ...

  8. Cloudflare推出域名注册服务:不赚利润只收取成本费

    9月27日,Cloudflare官方博客宣布推出域名注册服务,承诺只收取成本费,不赚取利润. Cloudflare在2010年9月成立,在那之前就有Cloudflare的早期测试版客户问:" ...

  9. datasnap——动态注册服务类

    datasnap--动态注册服务类 在DataSnap的应用程序时,我们首先需要注册的服务器类,以提供访问客户端应用程序的服务器方法.通常的做法是使用DSServerClass组件,但有些时候,我们要 ...

  10. Spring Boot快速注册服务脚本

    前言 Spring Boot项目通过JAR打包部署的时候,一般我们所采取的措施是将其注册为服务,并通过service命令管理项目.但注册服务的过程相对繁琐,不如写一个脚本来快速注册(入门Shell). ...

最新文章

  1. 从Google的PaaS平台说起,解析中美Docker生态圈
  2. PAT甲级1010 Radix :[C++题解]进制位、秦九韶算法、二分(PAT通过率最低的一道题0.11)
  3. kl距离 java_信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息。
  4. Python笔记(十五)_异常处理
  5. leetcode-49-字母异位词分组(神奇的哈希)
  6. ecshop备份数据 ecshop转移数据 ecshop更换主机
  7. 为什么考研的都不是班里最优秀的?
  8. 建筑与计算机技术,计算机技术与建筑设计的不完全认识
  9. swift4.0闭包
  10. 【预测模型】基于matlab GUI BP神经网络+最小二乘法预测模型【含Matlab源码 208期】
  11. ps 批处理图片大小和压缩
  12. iOS 单例模式详解/避免滥用单例
  13. 爽一把手写Bundle Adjustment
  14. TiDB-explain详解
  15. 【教程】通过lothelper实现短信接收测试
  16. 小米手机录制数据集软件操作
  17. 12接口扩展无忧,存储显示充电都拉满,ORICO XDR扩展坞上手
  18. vue--后台管理系统问题和功能实现思路集锦
  19. 百度地图开发技术方案及解决办法
  20. appium第一个脚本

热门文章

  1. GDUFE ACM-1096
  2. 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim...
  3. maven打包时把依赖的jar包打进去
  4. 推荐几本lisp的书.
  5. CompositeUI Demo BankBranchWorkbench
  6. java容器输入_Java 容器初识篇
  7. c:foreach中varStatus参数的含义
  8. Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理(15)
  9. mvn install跳过测试
  10. radiogroup多选_【RadioGroup】实现单选并获得所选项值 | 学步园