一、依赖注入:
依赖注入是一种设计模式,可以自动事先查找依赖关系,在目标需要的时候立即注入进去。AngularJS使用$injetor(注入器服务)来管理依赖关系的查询和实例化。事实上,$injetor负责
实例化AngularJS中所有的组件,包括应用的模块、指令和控制器等。
二、依赖注入的方式:
推断式注入声明:如:app.controller('myController',function($http,$location){});
显式注入声明:如:
var fn = function($http,$location) {};
fn.$inject = ['$http','$location'];//$inject 显式声明注入
app.controller('myController',fn);
行内注入声明:如:
app.controller('myController',['$http','$location',function($http,$location){}]);
三者优缺点主要是在js代码合并压缩后 第一种方式会使得angular无法推断依赖关系而应用无法正常使用,
后两种都可以避免上述情况发生,个人推荐使用第三种,也应该作为angular应用代码的规范,依赖关系清晰明了
不过行内注入原理和显式注入原理完全一样,只是显式注入方式的一种语法糖而已。