Non voglio caricare pigro i miei modelli di percorso. Invece voglio caricare tutti i miei modelli di percorso in $ templateCache prima di qualsiasi esecuzione di percorsi.
Questo è quello che sto facendo:
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");
}]);
Questo funziona bene se si passa a /
in quanto non corrisponde ad alcun percorso. Ma se si naviga o si aggiorna su /#/login
, sembra che il servizio di instradamento tenti di caricare il modello prima che il mio blocco di esecuzione venga eseguito e faccia una richiesta al server per esso.
Esiste comunque un modo per garantire che il codice che popola il $ templateCache venga eseguito prima che il servizio di route vada alla ricerca del modello?
Questa è una buona idea. Pensavo che avrebbe funzionato, ma non è così. Il blocco * config * del modulo principale 'myApp' viene eseguito prima del blocco * run * del modulo 'templates' anche se myApp ha una dipendenza dai template. Sto pensando che i blocchi di configurazione non debbano aspettare le dipendenze per eseguirli come probabilmente fanno i blocchi di esecuzione. E sfortunatamente i percorsi devono essere impostati in un blocco di configurazione. – CHS
Sì, i percorsi devono essere impostati nel blocco di configurazione, ma il routing non viene eseguito nel blocco di configurazione, quindi il codice che ho allegato farà il trucco, $ templateCache verrà compilato prima del reindirizzamento. Lo faccio nelle mie app (usando grunt-angular-templates) e funziona perfettamente. –
@Tadeusz No, controlla il tuo traffico di rete. Il routing tenterà di scaricare il modello per il percorso corrispondente all'URL corrente anche prima dell'esecuzione dei blocchi di esecuzione. (1.2-rc3) Potresti non accorgertene se il tuo server è in grado di rispondere correttamente a questa richiesta. Le future modifiche al percorso useranno la cache, ma quella iniziale no. – user169867