Sono molto nuovo per Angular. Ho visto alcuni tutorial e letto alcuni documenti. Ora sto iniziando a sporcarmi le mani. Sto provando a creare una semplice app per dispositivi mobili a una pagina con più visualizzazioni e un pulsante successivo \ indietro per controllare ciascuna vista. Sto usando la libreria UI di Angular Mobile, ma non dovrebbe importare molto.AngularJS - caricamento dinamico di JS esterno in base a percorsi
Il mockup base è la seguente:
<html>
<head>
<link rel="stylesheet" href="mobile-angular-ui/dist/css/mobile-angular-ui-base.min.css">
<link rel="stylesheet" href="mobile-angular-ui/dist/css/mobile-angular-ui-desktop.min.css">
<script src="js/angular/angular.min.js"></script>
<script src="js/angular/angular-route.min.js"></script>
<script src="mobile-angular-ui/dist/js/mobile-angular-ui.min.js"></script>
<script src="app/app.js"></script>
<script src="app/firstController.js"></script>
<script src="app/secondController.js"></script>
<script src="app/thirdController.js"></script>
</head>
<body ng-app="demo-app">
<div ng-view></div>
<div ng-controller="nextBackController" class="navbar navbar-app navbar-absolute-bottom">
<div class="btn-group justified">
<a href="#/" class="btn btn-navbar btn-icon-only"><i class="fa fa-home fa-navbar"></i></a>
<a href="#/second" class="btn btn-navbar btn-icon-only"><i class="fa fa-list fa-navbar"></i></a>
</div>
</div>
</body>
</html>
App.js è la seguente:
var app = angular.module('demo-app', [
"ngRoute",
"mobile-angular-ui"
]);
app.config(function($routeProvider) {
$routeProvider.when('/', { controller: "firstController",
templateUrl: "views/first.html"});
$routeProvider.when('/', { controller: "secondController",
templateUrl: "views/first.html"});
$routeProvider.when('/', { controller: "thirdController",
templateUrl: "views/first.html"});
});
controllers = {};
controllers.nextBackController = function($scope, $rootScope) {
//Simple controller for the next, back buttons so we just put it in app.js
};
app.controller(controllers);
firstController.js conterrà qualcosa di simile a:
controllers.firstController = function($scope) {
//Do our logic here!!!
};
Il problema è se si nota nella parte superiore della pagina HTML devo caricare tutti i controller in. Questo non è scalabile. Voglio che ogni controller sia nel proprio file JS e non debba caricarlo staticamente poiché l'utente potrebbe non aver mai nemmeno bisogno di quel controller. C'è un modo per caricare dinamicamente il file JS effettivo quando si cambiano le rotte? oppure posso attaccare un tag script nella parte superiore del mio "first.html", "second.html", ecc.
Che cosa si vuole fare è esattamente come lo sto facendo ora. Ogni controller è nel proprio file JS. Il modo in cui li carico è: 'app.controller ("ControllerName", function() {/ * Codice controller * /}); '(dato che hai memorizzato il tuo modulo app nella variabile globale' app'). Pertanto, non uso 'app.controller (controller)' – Ian
@lan La mia domanda è come posso inserire i file JS del controller come ho bisogno di loro invece di metterli tutti nella parte superiore della pagina principale in tag di script. Diciamo che ho 20 controller, uno per ogni componente. Ciò renderà il tempo di caricamento orribile. Voglio solo entrare in .JS di firstController quando \ se ne ho bisogno. O l'angolare cerca automaticamente il file JS ?? – user3621014
Soprattutto per le soluzioni mobili, è necessario concatenare meglio tutti gli script, ridimensionarli e caricare solo un file javascript. Nella maggior parte dei casi questo sarà più veloce del caricamento di molti piccoli file. La latenza è il tuo nemico. – hgoebl