以角度扩展现有服务

时间:2015-02-04 09:04:32

标签: javascript angularjs

我使用角度咆哮服务(angular-growl),我需要一种方法来添加具有特定类型的咆哮,例如

.controller('Controller', ['$scope', 'growl', function ($scope, growl) {
     growl.add("Message", "INFO");
}

是否可以在角度启动过程中将新方法附加到growl服务(或将方法附加到任何服务)?

1 个答案:

答案 0 :(得分:2)

基本上,您可以使用Angular decorator的概念来扩展现有服务。这是通过$provide.decorator完成的。实现看起来像这样:

app.config(function($provide) {
  $provide.decorator('growl', function($delegate) {
    $delegate.add = function(message, type) {
      // implementation for add.
    };
    return $delegate;
  });
});

在此SO帖子What are "decorators" and how are they used?

中详细了解相关信息