压缩工具:YUI-compressor

为了优化网页功能,对一些脚本文件进行压缩,比如:删除所有的注释和空格等,简化形参。但是AngularJs模块中可以声明多种组件,如控制器、指令、过滤器、服务等。创建这些模块组件对象时,构造函数是由AngularJS调用的,故不能像普通函数那样,声明任意的形参。使得压缩后的文件无法使用,这时候采用标记式和行内式的数组形式(注意顺序的对应关系),使得压缩后依然可以使用。

依赖:实现功能的时候,如果需要某些模块,模块就是需要的依赖

AngularJS会自动根据依赖对象的形参名,创建需要的对象,最为实参传递进来——依赖注入!

ng模块常用的注入对象:

①.$http ②.$scope ③.$rootScope ④.$interval ⑤$timeout ⑥.$location ⑦.自定义服务

依赖注入的3种类型

1.推断式

这种注入方式不需要关注参数的先后顺序,ng会推断服务是否存在。不能处理压缩或者混淆后的代码,只能处理原始代码.

2.标记式

直接调用$inject属性来完成依赖的注入

 var ctrFunc=function ($scope,$show,$write) {
             $scope.funcBtn1=function(){
             $show.show();
         }
         $scope.funcBtn2=function(){
             $write.write();
         }
}
//对控制器的回调函数,设置依赖注入时的标记
ctrFunc.$inject=['$scope','$show','$write'];
app.controller('fanCtrl', ctrFunc);

3.行内式

允许开发人员将一个字符型数组作为对象的参数,在这个数组中,除了最后一个元素必须是函数体之外,都是服务名

app.controller(‘myCtrl’,[‘$scope’,’$http’,…function($scope,$http){}]);

强调:注意数组中依赖模块的对应关系

示例什么的个人项目再说吧,基础知识大致就这些了。

$injector注入器——依赖注入背后的故事

它可以快速定位到应用需要注入的各种服务,整个ng应用的注入对象都由$injector定位和创建。

$injector.has()à判断一个服务是否存在

$injector.get()à得到服务的实例

AngularJs学习笔记6——四大特性之依赖注入的更多相关文章

  1. AngularJs学习笔记2——四大特性之MVC

    angularJs的四大特性 ①.采用MVC的设计模式 ②.双向数据绑定 ③.依赖注入 ④.模块化设计 现在细说一下MVC的设计模式: MVC: Model(模型)--项目中的数据 View(视图)- ...

  2. AngularJs学习笔记7——四大特性之模块化设计

    模块化设计 1.引用自定义模块并调用 自定义模块中,如果有一些服务.封装好笑模块,在另外一个模块中(声明的时候,在依赖列表中加入要引入的模块) var app02 = angular.module(' ...

  3. AngularJs学习笔记4——四大特性之双向数据绑定

    双向数据绑定 方向1:模型数据(model)绑定到视图(view) 实现方法:①.{{model变量名}}  ②.常用指令(ng-repeat) 方向2:将视图(view)中用户输入的数据绑定到模型数 ...

  4. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入

    依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...

  5. AngularJs学习笔记--Dependency Injection(DI,依赖注入)

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/di 一.Dependency Injection(依赖注入) 依赖注入(DI)是一个软件设计模式,处理 ...

  6. AngularJs学习笔记--Forms

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input.select.textarea)是用户输入数据的一种方式.Form(表单) ...

  7. AngularJs学习笔记--concepts(概念)

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...

  8. AngularJS学习笔记2——AngularJS的初始化

    本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过程: <!doctyp ...

  9. AngularJs学习笔记--Injecting Services Into Controllers

    原版地址:http://docs.angularjs.org/guide/dev_guide.services.injecting_controllers 把service当作被依赖的资源加载到con ...

随机推荐

  1. LA 6449 IQ Test

    [题目] 给出一个长度为n的数组(8<n<12),告诉你规律  (1<=d<=3)要求d尽量小 现在求第n+1项 [题解] 水题 不知道怎么求a1~ad? 用克拉默法则 [代码 ...

  2. 【转】AFNetworking之于https认证

    转自:http://www.cocoachina.com/ios/20161220/18393.html 写在开头: 本来这篇内容准备写在AFNetworking到底做了什么?(三)中的,但是因为我想 ...

  3. <customErrors>节点说明1

    <customErrors>节点用于定义一些自定义错误信息的信息.此节点有Mode和defaultRedirect两个属性, 其中defaultRedirect属性是一个可选属性,表示应用 ...

  4. Sqlserver数据库日志太大如何快速删除

    sqlserver使用在windows系统中,如果文件超上百GB了,我们还直接删除不了,这个问题我以前的apache日志就碰到过,至今还没删除呢,那么Sqlserver数据库日志太大如何快速删除呢,有 ...

  5. c - 十六进制 转 十进制

    考虑到举一反三,这里顺便上完整代码,顺便可以考虑实现R进制和十进制的转换. 完整代码: #include <stdio.h> #include <math.h> double ...

  6. php遍历数据库

    数据库 <?php mysql_connect("localhost","root",""); mysql_set_charset(& ...

  7. 1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯

      第一种部署方式: 直接使用myeclipse 找到server服务 添加要部署的项目Add Deployment ,然后选中某个项目,首选Exploded Archive(development ...

  8. C++拾遗(十一)类继承

    首先,这里提到的继承都是公用继承. 派生类 1.派生类需要添加自己的构造函数. 2.派生类创建之前会首先创建基类对象,即调用基类构造函数.在派生类构造函数后通过初始化列表将参数传递给基类构造函数. 3 ...

  9. Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试

    本文章仅限cnblogs网站内转载!请某网站自觉,遵纪守法,尊重原创! 系统环境情况: 最小化.无桌面环境 新安装的Debian 8 Server 版本操作系统虚拟机一台 手动编译安装MongoDB ...

  10. Properties配置文件

    package file; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; ...