$provide.decorator
$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 来装修。
随机推荐
- 使用 Docker 容器应该避免的 10 个事情
当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点: 第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的.您可以使用通过相同QA测试的镜像,使产品具有相同的表现. ...
- C#经典系列-跨语言
VS是个大平台,当C#不好实现的时候,可以想想是否可以引用下其他语言下面的方法,或许你有大收获~ 如何判断“a”是不是数字类型. 1.在C#中我们可能会用TryParse来判断当前的”a“是否为整数. ...
- Transact-SQL 数据类型转换
Syntax Syntax for CAST: CAST ( expression AS data_type [ ( length ) ] ) Syntax for CONVERT: CO ...
- ASCII码表及键盘码表。
ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ...
- Linux设备驱动中断机制
[主要内容] Linux设备驱动编程中的中断与定时器处理 [正文] 一.基础知识 1.中断 所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前的程序,转去处理突发 ...
- [转] linux下的僵尸进程处理SIGCHLD信号
什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息.这些 信息至少包括进程ID,进程的终止状态,以及 ...
- C++输出hello world 详细注释
/* #include<iostream> #:预处理标志,后面跟预处理指令,include:预处理指令,包含 <iostream>:c++头文件,输入输出流 这行的作用就是在 ...
- Win 8.1 无法安装 .net framework3.5
今天因为给电脑换了固态硬盘,重装了系统,就装了个 win 8.1 后来在用 AS SSD Benchmark 测试硬盘性能的时候提示要安装 .net framework3.5 它自己尝试联网下载安装, ...
- 关于导出oracle多个表的建表语句DLL,生成.sql语句。
--('TABLE','LINE','ODS_XX')这里面的表和用户都需要大写.如果表名用户名不大写会报这个错误:对象 "emp" 属于类型 TABLE, 在方案 "s ...
- Swift - 36 - 结尾闭包(Trailing closure)和捕获数值(Capturing Values)的简单介绍
//: Playground - noun: a place where people can play import UIKit // 初始化一个整数数组 var arr = [1, 3, 5, 7 ...