2012-11-09 26 views
9

Sadece angularJS (açısal tohum kullanarak) öğreniyorum ve sitenin yapılandırmasını sitenin geri kalanı yüklenmeden önce JSON beslemesinden yüklemem gerekiyor.AngularJS: Uygulama yüklemeden önce json beslemesi nasıl yüklenir?

Maalesef, uygulamanın geri kalan kısmı için $ http veya $ kaynağı kullanmak, feed'i zamanında iade etmiyor.

Uygulamanın geri kalanından önce bu verileri yüklemek için uygulamayı zorlamanın doğru yolu nedir?

cevap

5

Controller.resolve yöntemini kullanmanız gerekir. Misko'nun (temel açısal geliştiricilerinden biri) yanıtı https://stackoverflow.com/a/11972028/726711

+0

Teşekkürler, site site denetleyicisini oluşturdum ve buna gereksinim duyan tüm diğer denetleyicilere eklemek için çözüm kullandım. Tüm çalışma, ama bunu yapmanın daha iyi bir yolu olabileceğini düşünüyorum. – Bunkered

+5

Denetleyici rotaya bağlı değilse ne olur? –

0

Çözüm yöntemini kullanarak tüm birim testlerimi kırdım ... Bu şekilde, ayarların bir servis olduğu yere gittim.

$q.when(settings.loadConfig()).then(function() { 
    console.log(settings.versionedApiUrl); 
}); 

Daha sonra, birden fazla talep etmediğimizden emin olmak için ayarları yükleyip yüklemediğimizi kontrol ediyorum.

class settings { 
    loadConfig = ():angular.IPromise<any> => { 

       var deferred = this.q.defer(); 

       if(this.settingsLoaded ){ 
         deferred.resolve({}) 
         return deferred.promise; 
       } 

       this.http({ 
         url:'config.json' 
       }).then((result) => { 

         if(result.data){ 
          this.versionedApiUrl = result.data.versionedApiUrl; 
          this.apiServer = result.data.apiServer; 
          this.widgetServiceRoot = result.data.widgetServiceRoot; 
          this.settingsLoaded = true; 
         } 

         deferred.resolve({}); 
       }); 
       return deferred.promise; 
      } 
} 
İlgili konular