SORU
15 Kasım 2012, PERŞEMBE


Can't açısal gelen enjektör al

Bu iki modül ile uygulama var:

angular.module('components', []).directive('foo', function () { return {};});
angular.module('gaad', ['components']);

Yönergeler, burada ... dahil değilim bu modülleri ile ilgili bir sürü var. Uygulama gayet iyi çalışıyor. gaad modülü için enjektör almak için çalışıyorum, ancak:

var injector = angular.injector(['gaad', 'components']); //called after 'gaad' module initialization

hata atılır:

Uncaught Error: Unknown provider: $compileProvider from components 

Uygulama oldukça, hiçbir fikrim yok hatalar için bakmak gerekir. Benim sorum ise şu:Sorunlarımın nedeni ne olabilir?

DÜZENLEME: Benim sorunum çoğaltmak başardı: http://jsfiddle.net/selbh/ehmnt/11/

CEVAP
15 Kasım 2012, PERŞEMBE


Bu soruyu cevaplamadan önce olduğuna dikkat etmeliyiztek başına enjektör uygulama örneği ve modül başına değil. Bu anlamda Olası modül başına bir enjektör almak mümkün değildir. Eğer üst düzey modülü alırsak tabii ki, tüm uygulama temsil eder. Bu anlamda, uygulama ve üst düzey bir modül eşdeğer gibi görünüyor. İnce bir fark gibi görünüyor olabilir ama önemli olan tam ve düzgün bir şekilde bu soruya cevap vermek için anlamak önemlidir.

Sonraki, anladığım kadarıylaalmak$injector ve yeni bir örneğini oluşturun. Şey angular.injector modüller (bir uygulama) ** 10 yeni bir örneğini bağımsız değişken olarak belirtilen yaratacak. Burada ana AngularJS modülü (ng) açıkça belirtilmesi gerekir. Yani, bu kodu örnek:

var injector = angular.injector(['gaad', 'components']);

bileşenleri 'gaad' ve 'bileşenleri' modülleri ve $compileProvider belli ki özel modüllerde tanımlı değil. tanımlanan yeni bir enjektör oluşturmak için çalışıyordunListeye ng modül ekleme"," yeni bir enjektör oluşturarak . sorunu çözmek istiyorsunuz - muhtemelen olmasını istemediğiniz bir şey.

Aslında enjektör bir örneğini çalıştıran bir uygulama ile ilişkili almak için2 yöntem kullanabiliriz:

İşte jsFiddle enjektör alımı 2 yöntem gösteren: http://jsfiddle.net/xaQzb/

Ayrıca doğrudan $injector kullanarak birim testler dışında çok yaygın bir senaryo olduğunu unutmayın lütfen. AngularJS dünya dışından alınıyor AngularJS hizmetleri için düşünce yararlı olabilir. Burada daha fazla bilgi: Call Angular JS from legacy code.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • Incredible Tutorials

    Incredible T

    27 EKİM 2006
  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010