AngularJs学习笔记6——四大特性之依赖注入
压缩工具: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——四大特性之依赖注入的更多相关文章
- AngularJs学习笔记2——四大特性之MVC
angularJs的四大特性 ①.采用MVC的设计模式 ②.双向数据绑定 ③.依赖注入 ④.模块化设计 现在细说一下MVC的设计模式: MVC: Model(模型)--项目中的数据 View(视图)- ...
- AngularJs学习笔记7——四大特性之模块化设计
模块化设计 1.引用自定义模块并调用 自定义模块中,如果有一些服务.封装好笑模块,在另外一个模块中(声明的时候,在依赖列表中加入要引入的模块) var app02 = angular.module(' ...
- AngularJs学习笔记4——四大特性之双向数据绑定
双向数据绑定 方向1:模型数据(model)绑定到视图(view) 实现方法:①.{{model变量名}} ②.常用指令(ng-repeat) 方向2:将视图(view)中用户输入的数据绑定到模型数 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入
依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...
- AngularJs学习笔记--Dependency Injection(DI,依赖注入)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/di 一.Dependency Injection(依赖注入) 依赖注入(DI)是一个软件设计模式,处理 ...
- AngularJs学习笔记--Forms
原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input.select.textarea)是用户输入数据的一种方式.Form(表单) ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- AngularJS学习笔记2——AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过程: <!doctyp ...
- AngularJs学习笔记--Injecting Services Into Controllers
原版地址:http://docs.angularjs.org/guide/dev_guide.services.injecting_controllers 把service当作被依赖的资源加载到con ...
随机推荐
- LA 6449 IQ Test
[题目] 给出一个长度为n的数组(8<n<12),告诉你规律 (1<=d<=3)要求d尽量小 现在求第n+1项 [题解] 水题 不知道怎么求a1~ad? 用克拉默法则 [代码 ...
- 【转】AFNetworking之于https认证
转自:http://www.cocoachina.com/ios/20161220/18393.html 写在开头: 本来这篇内容准备写在AFNetworking到底做了什么?(三)中的,但是因为我想 ...
- <customErrors>节点说明1
<customErrors>节点用于定义一些自定义错误信息的信息.此节点有Mode和defaultRedirect两个属性, 其中defaultRedirect属性是一个可选属性,表示应用 ...
- Sqlserver数据库日志太大如何快速删除
sqlserver使用在windows系统中,如果文件超上百GB了,我们还直接删除不了,这个问题我以前的apache日志就碰到过,至今还没删除呢,那么Sqlserver数据库日志太大如何快速删除呢,有 ...
- c - 十六进制 转 十进制
考虑到举一反三,这里顺便上完整代码,顺便可以考虑实现R进制和十进制的转换. 完整代码: #include <stdio.h> #include <math.h> double ...
- php遍历数据库
数据库 <?php mysql_connect("localhost","root",""); mysql_set_charset(& ...
- 1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯
第一种部署方式: 直接使用myeclipse 找到server服务 添加要部署的项目Add Deployment ,然后选中某个项目,首选Exploded Archive(development ...
- C++拾遗(十一)类继承
首先,这里提到的继承都是公用继承. 派生类 1.派生类需要添加自己的构造函数. 2.派生类创建之前会首先创建基类对象,即调用基类构造函数.在派生类构造函数后通过初始化列表将参数传递给基类构造函数. 3 ...
- Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试
本文章仅限cnblogs网站内转载!请某网站自觉,遵纪守法,尊重原创! 系统环境情况: 最小化.无桌面环境 新安装的Debian 8 Server 版本操作系统虚拟机一台 手动编译安装MongoDB ...
- Properties配置文件
package file; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; ...