2013-10-28 26 views
5

Rota şablonlarımı tembel yüklemek istemiyorum. Bunun yerine, tüm rota şablonlarını yürütmekte olan herhangi bir rotadan önce $ templateCache dosyasına yüklemek istiyorum.

Bu yapıyorum budur:

angular.module('myApp', ['ngRoute']).config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) 
{ 
    $locationProvider.html5Mode(false); 

    $routeProvider.when("/main", {templateUrl: "main", controller: "MainCtrl"}) 
        .when("/login",{templateUrl: "login", controller: "LoginCtrl"}); 
}]) 
.run(['$location','$templateCache', function ($location, $templateCache) 
{ 
    //...Save templates in $templateCache 
    $location.path("/login"); 
}]); 

herhangi rotayı uymuyor çünkü / göz atarsa ​​bu Tamam çalışır. Ancak, /#/login'a göz atıyor veya yeniliyorsanız, rota hizmetinin, çalıştırılan bloğum çalışmaya başlamadan önce şablonu yüklemeye çalıştığı ve sunucu için bir istekte bulunduğu anlaşılıyor.

Rota hizmetinin şablon aramaya başlamadan önce $ templateCache öğesinin uygulanacağı kodun yürütülmesini sağlamak için yine de var mı?

cevap

3

Eğer homurdanı kullanırsanız, bu amaç için grunt-angular-templates'u öneririm, ancak bunu yapmak istemiyorsanız ve bunu yapmak istiyorsanız, şu anda sahip olduğunuzla aynı mantığa sahip olduğunuz ayrı bir modül oluşturun: ve ardından bu modülü uygulama bağımlılığınız olarak referans alabilirsiniz. Bağımlılık modülünün çalıştırma bloğu, önce mantık vuruşlarını yönlendirmeden önce çalışır ve istediğiniz gibi çalışır.

+0

Bu iyi bir fikir. İşe yarayacağını düşündüm ama olmadı. 'MyApp' ana modülünün * config * bloğu, myApp'ın şablonlara bağımlı olmasına rağmen, 'templates' modülünün * run * bloğundan önce çalışır. Yapılandırma bloklarının büyük olasılıkla yürütme blokları gibi yürütmek için bağımlılıkları beklemek zorunda olmadığını düşünüyorum. Maalesef rotaların bir yapılandırma bloğunda ayarlanması gerekiyor. – CHS

+0

Evet, güzergâhların yapılandırma blokunda ayarlanması gerekir, ancak yönlendirme kendisi yapılandırma bloğunda çalışmaz, bu yüzden eklediğim kod hile yapar, $ templateCache yönlendirmeden önce doldurulur. Bunu benim uygulamalarımda (grunt-açısal-şablonları kullanarak) yapıyorum ve mükemmel çalışıyor. –

+0

@Tadeusz Hayır, ağ trafiğinizi kontrol edin. Yönlendirme, çalıştırma blokları yürütmeden önce mevcut URL ile eşleşen rota için şablonu indirmeyi deneyecektir. (1.2-rc3) Sunucunuz bu isteği doğru bir şekilde yanıtlayabiliyorsa, bunu fark etmeyebilirsiniz. Gelecek rota değişiklikleri önbelleği kullanacaktır, ancak ilk olanı olmayacaktır. – user169867

İlgili konular