2016-04-14 47 views
0

AngularJS ve bağımlılık enjeksiyonu ile çalışan birçok kişi için benzer bir sorun var gibi görünüyor: benim AngularJS uygulaması bir Bilinmeyen verir Sağlayıcı: $ scopeProvider < - Bir denetleyiciye hizmet enjekte çalıştığımda $ scope hatası. Yine de, her yerde bulabildiğim yaygın hata (ve çözüm), hizmet işlevine $ kapsam veya $ rootScope eklememesi gerektiğidir. Ben yapmadım. Bulduğum diğer bir konu da, tüm bağımlılıkları dizeler olarak iletmeniz gerektiğidir, çünkü onlar AngularJS tarafından küçültme nedeniyle tanınmadılar (şimdi benim dev ops'larımda var). Ben de yaptım. Yani şimdi soru ... mantığım/yapmamın nesi yanlış ve bunu nasıl çözebilirim?

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 }])
Ayrıca

index.html dosyasına eklenen dosyaların sırasıdır:

<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>

İşte benim app temel yapısı var

Şimdiden teşekkürler!

cevap

3

Denetleyicinize enjekte edilecek bağımlılıkların adları, denetleyici işlev bildiriminde karşılık gelen parametrelerle aynı sırada olmalıdır (bkz. Angular's guide to Dependency Injection).

Kişisel denetleyici böyle başlatıldı edilmelidir:

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

O angularjs listelemek için ortak bir kongre özel olanları ardından ilk de bağımlılıkları var.

+1

[Bağımlılık Doktorları] https://docs.angularjs.org/guide/di –