2015-08-13 68 views
1

我有一個問題,我無法解決... 我已經創建了一個模塊和一個工廠。 現在我嘗試使用配置塊中的工廠進行路由,但我有一個「未知提供者」錯誤。 調試,我已經簡化了代碼以嘗試獲得重點,但我仍然有同樣的錯誤。 我有以下代碼:AngularJS - 創建工廠時的未知供應商

(function(){ 
    'use strict'; 
    var app = angular.module('testModule', [ 
     'ngResource', 
     'ui.router' 
    ]); 

    app.factory('testFct', [function() { 
    return { 
     a: "bienvenue" 
    }; 
    }]); 

    app.config(['testFct','$stateProvider','$urlRouterProvider',function(testFct, $stateProvider, $urlRouterProvider) {}]); 


})(); 

,我得到的錯誤:

Error: [$injector:modulerr] Failed to instantiate module testModule due to: 
[$injector:unpr] Unknown provider: testFct 

注:我曾嘗試以注入testFctProvider來代替,而這工作,但我無法再使用我廠本身

回答

2

你不能注入服務配置塊,只有提供者。

您需要爲服務聲明一個提供者,以便能夠添加他與stateProvider/urlRouterProvider之間的交互。

如果你不需要這些交互,只需要初始化某些東西,就可以使用運行模塊而不是配置文件,在其中注入服務。

+0

或者只是將該代碼移動到「運行」塊,而不是在可以使用服務的位置。 – vittore

+0

謝謝,實際上我需要調用al web服務來檢查解析塊中用戶的身份驗證。我也嘗試創建一個提供程序,但我仍然得到「未知的提供程序」... – Nicolas

+0

您將無法在配置塊中執行此操作,因爲您無法訪問$ http服務,只有$ httpProvider 。在應用程序初始化期間配置/運行塊和ajax調用是有些角度真的很糟糕...... –