2016-06-13 31 views
0

在項目中,我有一對夫婦的provider S的我啓動如何在配置階段(角)

angular.module('myApp', []) 
    .config((barFooProvider, ....) => { 
     barFooProvider.setAPIPath = '/a/b/c'; 
     ... 
    }); 

期間初始化使用工廠正如你可以看到我在這裏定義的API路徑這是一個串。但是,我怎麼能設置一個工廠?或者是定義服務名稱並稍後使用$注入器的唯一方法?

回答

0

你只可以使用供應商在配置階段
換句話說供應商都在AngularJs配置
可能是這樣link將是有益的

0

商都可以在配置階段所使用的唯一的服務!

app.provider('test', function() { 

    // set default path 
    var APIPath = 'a/b/c'; 

    function setAPIPath(path) { 
     APIPath = path; 
    } 

}); 


angular.module('app', []).config(function(testProvider) { 
    // set path during config 
    testProvider.setAPIPath('x/v/b'); 
}); 
1

您可以使用$inject屬性註釋(docs)對服務提供商的$get方法:

myApp.provider('test', function() { 

    this.setFactoryName = function(name) { 
     this.$get.$inject = [name]; 
    }; 

    this.$get = function(factory) { 
     return { 
      getMessageFromFactory: function() { 
       return factory.msg; 
      } 
     }; 
    }; 

    // set default value 
    this.setFactoryName('myFactory1'); 

}); 

然後將其配置是這樣的:

myApp.config(function(testProvider){ 
    testProvider.setFactoryName('myFactory2'); 
}); 

這種方式所需的工廠將在服務實例化時被注入您的提供者的$get方法。

+0

這是一個不錯的解決方案。我已經使用這樣的$注入器:'this。$ get = function($ injector){...}'。在我的情況下,依賴關係是可選的,這意味着您可以設置一個或幾個服務。據我所知,這不能解決你的問題,這是真的嗎? –

+0

@JanancaScaljeri,是的,我想是的。 –

相關問題