首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是正确的方法处理复制的工厂在安古拉杰?

什么是正确的方法处理复制的工厂在安古拉杰?
EN

Stack Overflow用户
提问于 2014-07-08 22:21:26
回答 2查看 177关注 0票数 0

实例化角的工厂n次。

示例:

代码语言:javascript
复制
app.factory('FooService', function(){
   return {
       hello: function() {
           return "hello foo first";
       }
   } 
});

app.factory('FooService', function(){
   return {
       hello: function(){
           return "hello foo second";
       }
   } 
});

第二个服务将覆盖http://plnkr.co/edit/FNqDdH5w5ArbJEBsgsLc?p=preview上的第一个演示。

这个例子只是为了说明这个问题,但是现实世界的问题是不同的开发人员用相同的名称定义了服务,这使得很难排除故障。

什么是正确的方法处理复制的工厂在安古拉杰?(或容易预防或发现)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 22:55:00

我不知道什么是正确的方法,但是您可以问injector是否存在特定的服务。

代码语言:javascript
复制
var myModule = angular.module('myModule', [])
        .factory('test', function () {
            return { test: 'test' };    
        });

var injector = angular.injector(['myModule']);

console.log(injector.has('test')); //true

还请注意,服务必须是在注入器检索之前定义的,这意味着您不应该尝试缓存injector,只需每次查询它。

票数 1
EN

Stack Overflow用户

发布于 2014-07-08 22:42:10

这是装潢工的完美用例。

解码器 服务装饰器拦截服务的创建,允许它覆盖或修改服务的行为。装饰器返回的对象可以是原始服务,也可以是替换或包装并委托给原始服务的新服务对象。

如何使用:

代码语言:javascript
复制
app.config(function($provide) {
  $provide.decorator('FooService', FooServiceDecorator);

  function FooServiceDecorator($delegate) {
    $delegate.hello = function() {
      return "hello foo second";
    };
    return $delegate;
  }
});

示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24642424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档