angularJS学习之路(二十八)---拦截服务
2015-11-24 19:44
495 查看
$provider 服务提供了在服务实例创建时对其进行拦截的功能
拦截的目的就是对服务就行 扩展(修改) 或者 用另外的内容进行替代
装饰器的功能是非常强大的,它不仅可以在应用在我们自己的服务上,
也可以对angularJS的核心服务进行拦截、中断、甚至替换功能的操作
事实上angularJS中很多功能的测试就是借助 $provider.decorator() 建立的
对服务进行扩展:将外部数据缓存进localStorage的功能
对服务进行封装:作用是在开发中进行调试和跟踪
假如,我们想对我们定义过的服务加入日志功能,我们就可以借助 decorator()函数
该函数接受两个参数:
name 字符串:将要拦截的服务的名称
函数:在服务实例化时调用该函数,这个函数由injector.invoke调用,可以将服务注入这个函数中
$delegate 是可以进行装饰的最原始的服务,为了装饰其他的服务,需要将其注入到 装饰器
拦截的目的就是对服务就行 扩展(修改) 或者 用另外的内容进行替代
装饰器的功能是非常强大的,它不仅可以在应用在我们自己的服务上,
也可以对angularJS的核心服务进行拦截、中断、甚至替换功能的操作
事实上angularJS中很多功能的测试就是借助 $provider.decorator() 建立的
对服务进行扩展:将外部数据缓存进localStorage的功能
对服务进行封装:作用是在开发中进行调试和跟踪
假如,我们想对我们定义过的服务加入日志功能,我们就可以借助 decorator()函数
该函数接受两个参数:
name 字符串:将要拦截的服务的名称
函数:在服务实例化时调用该函数,这个函数由injector.invoke调用,可以将服务注入这个函数中
$delegate 是可以进行装饰的最原始的服务,为了装饰其他的服务,需要将其注入到 装饰器
var gameDecorator = function () { alert('i am a decorator'); };
app.config(function ($provide) { $provide.decorator('game',gameDecorator); });
相关文章推荐
- angularJS学习之路(二十七)---创建服务的五大方法---value
- angularJS学习之路(二十六)---创建服务的五大方法---constant
- 推荐10个很棒的AngularJS学习指南
- AngularJS控制器controller如何通信?
- 推荐10个很棒的AngularJS学习指南
- 推荐10个很棒的AngularJS学习指南
- 在项目中使用AngularJS+UI-Grid
- angularJS学习之路(二十五)---创建服务的五大方法---provider
- 推荐10个很棒的AngularJS学习指南
- IONIC+ANGULARJS语言切换
- angularJS学习之路(二十四)---创建服务的五大方法---service
- angularJS学习之路(二十三)---创建服务的五大方法---factory
- AngularJS基础
- 对比Jquery 与 AngularJs
- AngularJS入门教程:日期格式化
- angularJS学习之路(二十二)---模块加载---config
- angularJS学习之路(二十一)---injector---初探依赖注入
- angularJS学习之路(二十)---自定义指令---transclude的作用
- [转]angularjs 设置全局变量的3种方法
- [转]AngularJs 多语言的使用 angular-translate