版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15253407/article/details/73689731
管理服务的依赖
添加自定义服务的依赖方法
在创建复杂的服务的时候,需要添加其他各类的服务和个类的对象
添加方式有三种
1.隐式指明
指的是在创建服务的函数中,直接在参数中进行调用,不进行任何的声明,采用这种方式在代码压缩的时候注入的对象有可能失效
var app = angular.module('app',[]);
app.factory('hello',function(param1,param2){})
app:模块 hello:服务名称 param1和param2注入的服务或者是对象
2.调用$inject属性
可以将需要的服务封装成一个数组,将他们作为$inject属性的值,但是效率比较比,不推荐使用。
var app angular.module('app',[]);
app.$inhect = ['param1', 'param2']
app.factory('hello',app)
3.显示的声明
在指定的服务的函数中,添加一个数组,在数组中按顺序声明,需要注入的服务和对象的名称,推荐使用
var app = angular.module('app',[])
app.factory('hello', ['param1', 'param2',function(param1,param2){}])
添加服务的其他设置
在angular中提供了decorator,目前对自定义的服务或者内置功能进行扩展会使用到,
$provide.decorator('ServiceName', Fn)
$provide 表示注入后的创建服务对象;
ServiceName 要拦截的服务的名称;
Fn表示服务在实例化时候调用的参数,在执行这个对象的时候,需要传递一个参数$delegate,这个参数表示服务实例化之后的对象,服务的新功能是通过对这个对象进行扩展和优化的。
demo:
angular.modlue('app', [])
.factory('$student', function() {
return {
name: 'hello',
age: 20
}
})
.config(function($provide)){
$provide.decorator('$student', function($delegate){
$delegate.title = 'extend title delegate';
return $delegate;
})
}.controller('test', function($scope,$student) {
$scope.stu = $student;
})
取值方式 {{ stu.name }} {{ stu.age }} {{ stu.title }}