2014-04-30 16 views
15

Açısal uygulamamda hizmetleri tanımladığım iki dosyam var, ancak bunları hem yönergemde hem de kullanmaya çalıştığımda, hizmet sağlayıcısının bulunmadığını belirten bir hata alıyorum hangi direktif için ikinci tanımlıyım. Bir servisin diğerinin üzerine yazması gibi görünüyor. Service2.js'deki modül tanımını myapp.services2 olarak değiştirirsem çalışır. Aynı modüle birden fazla fabrika ekleyebileceğimi düşünürdüm. Birisi yanlış yaptığım şeye işaret edebilir mi?angularjs farklı dosyalardaki aynı modül için hizmetleri tanımlar

service1.js:

var services = angular.module('myapp.services',[]); 
services.factory('Service1', function() { 
    // service code 
}); 

service2.js:

var services = angular.module('myapp.services',[]); 
services.factory('Service2', function() { 
    // service code 
}); 

mydirective.js:

angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2', 
function(service1,service2) { 
    // directive code 
}]); 
+0

Servis modülünü iki kez tanımlıyorsunuz. Sadece bir kez tanımlamanız yeterlidir (bir dosyada). En son projemde, var services = angular.module satırını kendi js dosyasına taşıdım (kesin olarak overkill). – aet

+0

, ikinci kez bakıp onu yeniden tanımlamamalı mı? –

+0

Enjeksiyon dizisini kaldırırsanız, bu şekilde çalışacağını düşünüyorum - angular.module ('myapp.services'); – aet

cevap

44

Bu dokümanlar şöyledir:

B angular.module ('myModule', []) kullanarak myModule modülünü oluşturacağımı ve myModule adında varolan bir modülün üzerine yazacağını bilmem. Varolan bir modülü almak için angular.module ('myModule') kullanın.

burada Bulunan: Zaten sadece yeniden yok

ne yaptığını https://docs.angularjs.org/guide/module

+16

Komik uygulama, hemen hemen herkesin kafa karıştırıcı olduğunu. angular.createModule (, ), angular.retrieveModule () '' çok fazla soru artmış olmaz! ;) Ayrıca hata ile '[]' eklemek – Mirko

+1

tespit etmek çok zor olduğunu düşünüyorum oldukça açık olsa da. JQuery ile çalışıyorum, bu yüzden .width() 'vs.' .width (newWidth) 'gibi şeyler oldukça önemsiz, en azından benim için. Ayrıca, sadece bir kez seni şaşırtacak. Modülün bulunamadığını söyleyen bir enjektör hatası gördüğünüzde, tekrar yaptığını bileceksiniz;) – tfrascaroli

0

bu mümkündür, ancak hata eğilimli, dolayısıyla

için küçük bir değişiklik yapın önerilmez olacak modül değişkeni service1.js dışındaki diğer dosyalarda bildirir veya modül tanımını kendi başına bir dosyaya koyar ve bu JS dosyasını Module.js, services.js, directive.js sırasına ekler ve

çalışacaktır