9

Yapılandırma yönteminde $http hizmetini kullanmam gerekir. Ancak $http yapısını kullanamazsınız, unknown Provider hata mesajı alıyorum.Bilinmeyen ABD Doları Angular içinde

Kodum:

.config(function($http, $routeProvider, $provide) { 
    $http.get("sampleslist.js").success(function(data) { 
     var loop = 0, currentRoute; 

     for (loop = 0; loop < data[loop].pages.length; loop++) { 
      currentRoute = data[loop].pages; 

      var routeName = "/" + currentRoute[loop].name; 
      $routeProvider.when(routeName, { 
       templateUrl:"/" + currentRoute.name + ".html", 
      }) 
     } 
    }) 

    app = {controller: $controllerProvider.register} 
}) 

bunun için çözüm sağlamak misiniz?

+3

Kuyusu kullanın. Yine de çalışma aşamasında kullanabilirsiniz. [App.config hizmet enjekte] arasında –

+1

Olası kopyalar (http://stackoverflow.com/questions/15937267/inject-service-in-app-config) – scokmen

cevap

3

sadece aslında yeni enjektörden $ http sunucusu alabilirsiniz AJAX istek yapmak gerekirse: Biz config http kullanamazsınız

.config(function($routeProvider, $provide) { 
    var $http = angular.injector(['ng']).get('$http'); 
    $http.get("sampleslist.js").success(

     function(data) { 

      var loop = 0, 
       currentRoute; 

      for (loop = 0; loop < data[loop].pages.length; loop++) { 

       currentRoute = data[loop].pages; 

       var routeName = "/" + currentRoute[loop].name; 

       $routeProvider.when(routeName, { 

        templateUrl: "/" + currentRoute.name + ".html", 

       }) 
      } 
     }) 

    app = { 
     controller: $controllerProvider.register, 
    } 
}) 
+0

$ routeProvider.when (routeName, { }) Bu işlev isabet etmiyor, neden? –

+0

OP'nin Açısal'nın koyduğu (kasıtlı) sınırlamayı atlatmasını bile önermem; o zaman bile, “başarı”, kullanımdan kaldırılmış bir yöntemdir ve kullanılmamalıdır. Bu şekilde '$ http' erişilmesi tehlikeli görünüyor ... –

3

Sen .config dosyasında yalnızca sağlayıcıları enjekte edebilir. Ancak $ http sağlayıcı değil, açısal uygulamanız $ http adlı sağlayıcıyı arıyor, ancak bulamadığı için hata attı.

Bu nasıl çözülür?

Eğer .run

+0

' .run' çalıştırılması * garanti edildi * sonra açısal sayfa yüklendi, daha önce değil .. –

+0

benim bilgi/okuma göre bu o açısal çalışma akışıdır. Yukarıda demek istediğim, kontrolörün yüklenmesinden önce bir şey çalıştırabilirsin. Sayfa yüklemesi yerine veriden bahsetmeliydim. app.config() app.run() yönergesi en (bunlar dom bulunursa) derleme fonksiyonları app.controller() yönerge bağlantı fonksiyonları (bulursa yine) –

+0

cevabı –

4

O .config içinde $http kullanmak için iyi bir uygulama değil de bunu yapabilir sizin açısal denetleyici yüklemeden önce herhangi ajax arama istiyorum. Biri .run'da kullanabilir veya .service veya .factory kullanarak hizmeti kullanabilir.

+0

düzenlenmiş Yaklaşık değil pratik. .config içinde $ http enjekte edemiyoruz. –

1

sampleslist.js üzerinde denetiminiz var mı? Eğer evet ise, belki sadece etiketi kullanarak indirebilir ve değişkenlere değerler atayabilirsiniz.

//sampleslist.js 
var samplelist = {...} 

//index.html 
<script src="samplelist.js"></script> 

Sonra angular.constant kullanarak açısal bu değerleri enjekte edebilir ya da sadece dediğin gibi, sen yapılandırma aşamasında $ http kullanamaz değişken samplelist

+0

Güncellemeniz için teşekkürler - Yariash –