2015-02-06 30 views
1

我加載文件上傳腳本我在Github上角依賴和供應商不提供錯誤

<script type="text/javascript" src="{% static 'bower_components/angular-file-upload/angular-file-upload.min.js' %}"></script> 

發現,有一個數據導入模塊:

(function() { 
'use strict'; 

    angular 
    .module('TestSite.import', [ 
     'TestSite.import.controllers' 
    ]); 

    angular 
    .module('TestSite.import.controllers', ['angularFileUpload']); 
})(); 

以及控制器

(function() { 
    'use strict'; 

    angular 
    .module('TestSite.import.controllers' , ['angularFileUpload']) 
    .controller('UploadController', UploadController); 

    UploadController.$inject = ['$scope','angularFileUpload']; 

    /** 
    * @namespace UploadController 
    */ 
    function UploadController($scope, FileUploader) { 
    $scope.uploader = new FileUploader(); 

    }; 

})(); 

我得到一個錯誤

Error: [$injector:unpr] Unknown provider: angularFileUploadProvider <- angularFileUpload 

我對模塊聲明和DI感到困惑。爲什麼我需要聲明模塊TestSite.import.controllers兩次?我正在注入正確的依賴關係(angularFileUpload),並且仍然出現該錯誤,還有什麼是提供程序以及爲什麼無法找到它?

回答

1

看起來像你混淆文件上傳服務的名稱。正確的依賴注入是這樣的:

angular 
    .module('TestSite.import.controllers') 
    .controller('UploadController', UploadController); 

UploadController.$inject = ['$scope', 'FileUploader']; 

/** 
* @namespace UploadController 
*/ 
function UploadController($scope, FileUploader) { 
    $scope.uploader = new FileUploader(); 
}; 

還要注意,您不必重新定義模塊TestSite.import.controllers。要訪問已經註冊模塊,您需要使用getter符號,這意味着沒有依賴數組作爲第二個參數:

.module('TestSite.import.controllers').controller(...); 
+0

我還需要申報,像這樣的依賴在模塊聲明'angular.module(「測試網站? import.controllers',['angularFileUpload']);' – bischoffingston 2015-02-06 20:33:33

+0

當你聲明模塊 - 是(你的第一個片段)。當你想要訪問已經聲明的模塊 - 不,只需使用'angular.module('TestSite.import.controllers')',它給你模塊實例。 – dfsq 2015-02-06 20:35:40