$provide.decorator 是angular 提供的一个功能。

目的是让我们可以扩展或装修我们的服务.

var app = angular.module("app", []);
app.factory("firstService", function () {
return {
data: "5"
}
});
app.factory("secondService", function () {
return {
data: "5"
}
});
app.config(["$provide", function ($provide) {
$provide.decorator('firstService', ["$delegate", "secondService", function (originalFirstService, secondService) {
log(secondService); //也可以注入其它服务
log(originalFirstService.data); //5
originalFirstService.data2 = 10;
return originalFirstService; //也可以return a new service
}]);
}]);
app.controller("ctrl", ["$scope", "firstService", function ($scope, firstService) {
log(firstService.data2); //10
}]);

在 app.config 时写好逻辑代码,当service被注入创建时就会经过decorator后才输出最终的服务。

一个服务可以被装修多次,$provide.decorator 会把逻辑装入array,在初始化的时候for loop 来装修。

随机推荐

  1. Google Java 风格 阅读随笔

    官方文档:Google Java Style 中文翻译版:Google Java编程风格指南, Hawstein's Blog 可以先看官方文档,遇到不确定有疑问的,可以再对照翻译版本阅读,加深理解. ...

  2. ZAB协议(转)

    转自:http://www.cnblogs.com/sunddenly/articles/4073157.html Zab协议   一.ZooKeeper概述 ZooKeeper内部有一个in-mem ...

  3. 改变和恢复view的方向

    self.navigationController.view.transform = CGAffineTransformMakeRotation(M_PI/2); self.navigationCon ...

  4. 工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat

    对常见的几个函数,周末没事写写,绝对是笔试面试中非频繁,前面n届学长无数次强调了,大家就别怀疑了.从今天开始,每天10道题. int atoi(const char* str) { if(str==N ...

  5. java.lang.UnsatisfiedLinkError: Native method not found 三种可能解决方案

    so文件编译生成后,运行时,有时候会遇到java.lang.UnsatisfiedLinkError: Native method not found问题,有可能是以下三种因素: 一.Jni方法头部大 ...

  6. 不相交集python实现

    1.不相交集是解决等价关系的一种数据结构,执行合并和查找的速度都很快,M次执行合并和查找的执行时间为(M*logN). 在一个集合中.对于每一对元素(a,b),a,b∈S,对于关系R假设满足以下三个条 ...

  7. 各个函数消耗的时间profiling和内存泄漏valgrind

    来源:http://06110120wxc.blog.163.com/blog/static/37788161201333112445844/ ARM(hisi)上面的profiling和valgri ...

  8. C# List集合转Json字符串示例代码

    将list集合转换为Json字符串简单实现代码: public static string GetJosn(List<CalendarInfo> list) { string jsonSt ...

  9. GUID的广泛使用

    GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID ...

  10. HTML <center> 标签

    浏览器支持 定义和用法所有浏览器都支持 <center> 标签. 对其所包括的文本进行水平居中. HTML 与 XHTML 之间的差异 在 HTML 4.01 中,center 元素不被赞 ...