什么是依赖注入
AngularJS采用的是模块化的方式来组织代码的,它会将一些通用逻辑封装成一个对象或者函数,实现最大程度的复用,这导致了使用者和被使用者之间存在了一些依赖关系。
所以所谓的依赖注入是指,在运行的过程中自动查找需要的依赖关系,然后将依赖关系传递给使用者的一种机制。
例如,造一个控制器,需要一个模块2(模型),这时开发需要向AngularJS申请一个模块2,AngularJS会根据使用者申请的模块,去寻找对应的模块,然后将找到的模块传递给使用者,这个过程就叫做依赖注入。
常见的AngularJS内置服务有$http,$location,$timeout,$interval,$rootScope等。
推断式注入
var app = angular.module('app',[]);
app.controller('demoController',function('$scope','$http'){
//逻辑代码
});
上面这种,直接将函数参数当成是依赖注入的方式叫做推断式注入,这种方式看似代码量很少,但是存在一个问题,当代码进行压缩的时候,函数的参数会被压缩成其他名字的变量,这个时候,angularjs就无法寻找到对应的依赖关系了,所以一般使用的是行内注入的方式。
行内注入
var app = angular.module('app',[]);
app.controller('demoController',['$scope','$htto','function('$scope','$http'){
//逻辑代码
});
将依赖关系写在数组中,除了最后一个参数是执行业务逻辑以外,前面的参数就是对应的依赖注入,这种方式就解决了推断式注入的问题,在代码压缩完后,仍然能查找到对应的依赖。