2016-04-14 10 views
0

私は、AngularJSと依存性注入で働く多くの人に同様の問題を抱えているようです。私のAngularJSアプリケーションはUnknownプロバイダ:$ scopeProvider < - サービスをコントローラに注入しようとすると、$ scopeエラーが発生します。それでも、私がどこでも見つけることができる唯一の一般的な間違い(および解決策)は、サービス関数に$ scopeまたは$ rootScopeを挿入しないでください。私はそれをしなかった。私が見つけたもう一つの問題は、すべての依存関係を文字列として渡す必要があるということです。なぜなら、MinularizationによってAngularJSによって認識されないからです(これは私が開発した時点で持っています)。私もやった。だから今質問は...私の論理/構造に何が間違っているのですか?これをどのように解決できますか?

angular.module('MyApp', ['ngMaterial']); 
 

 
angular 
 
     .module('MyApp') 
 
     .factory('Utils', function(){ 
 
\t \t return { 
 
\t \t \t normalCase: function(str){ 
 
\t \t \t result = ''; 
 
\t \t \t str.split(' ').forEach(function(string, i){ 
 
\t \t \t \t result += string[0].toUpperCase() + string.slice(1).toLowerCase(); 
 
\t \t \t \t if(i<str.split(' ').length) result += ' '; 
 
\t \t \t }); 
 
\t \t \t return result; 
 
\t \t \t } 
 
\t \t }) 
 
\t .controller('AppController', ['$scope', '$mdDialog', 'Employee', 'Utils', '$http', 
 
\t \t \t function($scope, Employee, Utils, $http, $mdDialog){ 
 
\t \t \t  $scope.employee.firstName = Utils.NormalCase(employee.firstName); 
 
\t \t }])
また

、index.htmlファイルに追加されたファイルの順序は次のとおりです:

<script src="js/app.js"></script> 
 
<script src="js/models/Employee.js"></script> 
 
<script src="js/models/Utils.js"></script> 
 
<script src="js/controllers/AppController.js"></script> 
 
<script src="js/controllers/EmployeeListController.js"></script> 
 
<script src="js/controllers/ScorecardController.js"></script>

は、ここに私のアプリの基本的な構造です

ありがとうございます!

答えて

3

コントローラに注入する依存関係の名前は、コントローラ関数宣言の対応するパラメータと同じ順序である必要があります(Angular's guide to Dependency Injection参照)。

あなたのコントローラは、次のように初期化する必要があります。

.controller('AppController', ['$scope', '$http', '$mdDialog', 'Employee', 'Utils', 
    function($scope, $http, $mdDialog, Employee, Utils){ 
    $scope.employee.firstName = Utils.NormalCase(employee.firstName); 
}]) 

また、カスタムのものに続いて最初のAngularJSの依存関係を一覧表示するための一般的な慣習、です。

+1

[Dependency Injection docs] https://docs.angularjs.org/guide/di –

関連する問題