我正在开发一个库,它扩展了ui.router中的一些功能,用于构建应用程序状态集.目前我通过以下形式在我的库中定义一个新的提供程序(让我们称之为enhancedState)来管理它:
myApp.provider('enhancedState',EnhancedState); EnhancedState.$inject = ['$stateProvider']; function EnhancedState ($stateProvider) { this.$stateProvider = $stateProvider; } EnhancedState.prototype = { /* fun new methods that wrap $stateProvider */ $get: ['$state',function ($state) { /* maybe wrap some $state functionality too */ return $state; } };
然后我可以在我的应用程序配置中使用我的enhancedStateProvider来执行有趣的新状态定义,遵循我的库的扩展功能.
但是,我更喜欢直接装饰$stateProvider类.我知道Angular的$provider.decorate()实用程序,但据我所知,它只能用于装饰生成的服务实例,而不是提供者.
有没有人成功地使用它来装饰提供者,或者是否知道在Angular 1.x中这样做的机制类似?
谢谢!
解决方法
你需要
AngularJS decorators(找到装饰器方法).检查
this plunker示例.基于
this所以帖子.
例:
app.config(function($provide) { $provide.decorator('$state',function($delegate) { $delegate.customMethod = function(a) { console.log(a); }; return $delegate; }); });