
正文
介绍Angular的注入服务
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
其实angular的注入服务是挺复杂的,目前看源码也只看懂了一半,为了不误导大家,我也不讲敢讲太复杂,怕自己都理解错了。
首先我们要知道angular的三种注入方式:
第一种:inference
var myModule = function($scope){
}
第二种:annotation
var myModule = function($location){
console.log('Module:代码注入$location成功');
console.log($location);
}
myModule.$inject = ['$location'];
$injector.invoke(myModule);
第三种:inline
var MyTest = ['$location',function($location){
}]
var MyTest = ['$location',function($location){
console.log('Test:代码注入$location成功');
console.log($location);
}]
var myModule = function($location){
console.log('Module:代码注入$location成功');
console.log($location);
}
angular.module('MyApp',[])
.run(function($injector){
console.log($injector);
//功能和注入时声明一样,但是在注入时声明有时会出现循环依赖的问题,这个时候基本可以在函数内部注入解决。
console.log($injector.get('$http'));
//用来获取对象的依赖注入
console.log($injector.annotate(MyTest));
//注入函数,当你定义了某个函数,超出ng的规范的时候,你可以选择用这种方法注入函数,来达到访问ng内置服务的目的
$injector.invoke(MyTest);
//当前服务是否存在
console.log($injector.has('myFact'));
// myModule.$inject = ['$location']
// $injector.invoke(myModule);
})
.factory('myFact',function(){
return {}
})
.controller('MyCtrl',function(){
})






