Sto tentando di utilizzare AngularJS e RequireJS in combinazione. Vorrei utilizzare il servizio $routeProvider
ed evitare di dover caricare tutti i controller per le mie visualizzazioni all'avvio dell'applicazione. Per quello, ho provato il seguente:Utilizzo di AngularJS per routing e caricamento di controller su richiesta utilizzando requirejs
define(['require', 'angular', 'appModule'], function (require, angular, app) {
app.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
require(['sitesController'], function(SitesController) {
return new SitesController();
})
}})
}]);
});
Sfortunatamente, questo non ha funzionato per me. Non ci sono errori Il file JS contenente il controller viene caricato correttamente ma non riesco a vedere il valore associato ai dati nella vista renderizzata. Mi chiedevo se potessi assegnare il valore di controller
in un altro modo che attenda il completamento della chiamata asincrona (per caricare il file JS).
Qualche idea?
L'unico modo per farlo è ottenere $ controllerProvider. Ho una soluzione di lavoro qui: https://github.com/matys84pl/angularjs-requirejs-lazy-controllers – matys84pl
@ matys84pl che è in realtà sulla falsariga di ciò che stavo pensando di fare. Grazie per aver condiviso questo. Una cosa però, ho esaminato il codice e visto che stai caricando i modelli usando il plug-in Require Text, è l'unico modo supportato per caricare i template usando la tua libreria? Cosa succede se voglio caricare il modello da un URL sul server, funzionerebbe? – Kassem
Dipende se l'url è relativo alla tua app .. in altre parole si trova sullo stesso dominio? In caso contrario, penso che sarebbe necessario utilizzare una sorta di proxy per ottenere (per caricare file da un altro dominio). – matys84pl