2016-04-04 30 views
2

Angularjs 1.2.23 kullanıyorum ve bir hizmet tarafından döndürülen bazı sonuçlara göre durumları yükleyecek bir sağlayıcı oluşturmak istiyorum. Aşağıda düşünün kod sample-Kullanıcı hizmetini kullanarak dinamik olarak açısal durumlar nasıl yüklenir

app.provider("myStateProvider", function ($stateProvider, CustomService) { 
 

 
    CustomService.getMenus({}, {}).$promise.then(function (menu) { 
 
    $stateProvider.state(menu); 
 
    }); 
 

 
});

Bu hata- Bilinmeyen sağlayıcıya Aşağıdaki Beni atar: CustomServiceProvider

Herhangi bir öneriniz ...

+0

Uygulamanızın herhangi bir yeriniz var mı? App.provider ("CustomService", ..... '? –

+0

App.service ('CustomService', function ($ resource) {}) gibi bir servise sahip olunuz, –

+0

Lütfen cevabıma bir göz atın, –

cevap

0

uygulamanıza bir provider enjekte Uygulamanın yapılandırma aşaması olarak adlandırılır. Bu aşamada, henüz oluşturulmadıkları için hizmetler erişilebilir değildir. (Referans https://docs.angularjs.org/guide/providers).

enjekte zaman service, factory, controller - Orada Bir servis (örneğin CustomService), ancak DEĞİL sağlayıcı enjekte edebilir - - çalıştırmak blokta enjekte oluyor size enjekte yoktu, bu yüzden sorun yok (Referans https://docs.angularjs.org/guide/di).

Sen CustomService hizmetine bir sağlayıcı oluşturabilirsiniz:

app.provider("CustomService", function() { 
    ... LOGIC GOES HERE (PUT GENERAL LOGIC RELATED TO THE SETUP PHASE OF THE SERVICE) 
}); 

Ve myStateProvider sonradan enjekte etmek mümkün olacak:

app.provider("myStateProvider", function ($stateProvider, CustomServiceProvider) { ... }); 

Son şey: eklemeyin Sağlayıcı Sağlayıcı adına, sadece şunu yapın:

app.provider("myState", function ($stateProvider) { 
}); 

NEDEN? Eğer enjekte etmeniz gerekiyorsa, myStateProviderProvider'u enjekte etmeniz gerekir (Açısal'yı "Sağlayıcıya" otomatik olarak ekler)

+0

Merhaba Alon yardımcı olacağını umuyorum, açıklamanız için teşekkürler ama benim sorunum Yapılandırma aşamasında bazı veriler ** $ resource ** yardımıyla. app.provider ("CustomService") işlevini kullanabiliyorsanız ($ kaynak) { ... LOGIC GOES HERE }); 'I ' Yani, temel sorun şu ki, açısal konfigürasyon aşamasında bir dinlenme servisi kullanarak bazı verileri yüklüyor –

+0

"$ source" öğesini bir sağlayıcıya enjekte edemezsiniz çünkü konfigürasyon aşaması, ancak '$ resourceProvider' enjekte edebilirsiniz (Ancak bu yardımcı olacaktır eğer emin değil). Uygulamanızda belirli bir duruma girmeden önce bağımlılıkları çözebileceğinizi unutmayın (bkz. ** rota çözümü ** burada https://docs.angularjs.org/api/ngRoute/provider/$routeProvider) –

+0

Ve işte tam bir eğitici http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx –

İlgili konular