加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 在Angular中装饰服务提供者

发布时间:2020-12-17 17:39:07 所属栏目:安全 来源:网络整理
导读:我正在开发一个库,它扩展了ui.router中的一些功能,用于构建应用程序状态集.目前我通过以下形式在我的库中定义一个新的提供程序(让我们称之为enhancedState)来管理它: myApp.provider('enhancedState',EnhancedState);EnhancedState.$inject = ['$stateProvi
我正在开发一个库,它扩展了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;
  });
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读