AngularJS - Viste
AngularJS supporta l'applicazione a pagina singola tramite più visualizzazioni su una singola pagina. Per fare ciò, AngularJS ha fornito le direttive ng-view e ng-template e i servizi $ routeProvider.
Direttiva ng-view
La direttiva ng-view crea semplicemente un segnaposto in cui una vista corrispondente (HTML o vista ng-template) può essere posizionata in base alla configurazione.
Utilizzo
Definisci un div con ng-view all'interno del modulo principale.
<div ng-app = "mainApp">
...
<div ng-view></div>
</div>
Direttiva ng-template
La direttiva ng-template viene utilizzata per creare una visualizzazione HTML utilizzando il tag script. Contiene l' attributo id che viene utilizzato da $ routeProvider per mappare una vista con un controller.
Utilizzo
Definisci un blocco di script con tipo come ng-template all'interno del modulo principale.
<div ng-app = "mainApp">
...
<script type = "text/ng-template" id = "addStudent.htm">
<h2> Add Student </h2>
{{message}}
</script>
</div>
$ routeProvider Service
$ RouteProvider è un servizio chiave che imposta la configurazione degli URL, li mappa con la corrispondente pagina HTML o ng-template e collega un controller con lo stesso.
Utilizzo 1
Definisci un blocco di script con tipo come ng-template all'interno del modulo principale.
<div ng-app = "mainApp">
...
<script type = "text/ng-template" id = "addStudent.htm">
<h2> Add Student </h2>
{{message}}
</script>
</div>
Utilizzo 2
Definire un blocco di script con il modulo principale e impostare la configurazione del routing.
var mainApp = angular.module("mainApp", ['ngRoute']);
mainApp.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/addStudent', {
templateUrl: 'addStudent.htm', controller: 'AddStudentController'
})
.when('/viewStudents', {
templateUrl: 'viewStudents.htm', controller: 'ViewStudentsController'
})
.otherwise ({
redirectTo: '/addStudent'
});
}]);
I seguenti punti sono importanti da considerare nell'esempio precedente:
$ routeProvider è definita come una funzione nella configurazione del modulo mainApp utilizzando la chiave come '$ routeProvider'.
$ routeProvider.when definisce un URL "/ addStudent", che è mappato a "addStudent.htm". addStudent.htm dovrebbe essere presente nello stesso percorso della pagina HTML principale. Se la pagina HTML non è definita, allora ng-template deve essere usato con id = "addStudent.htm". Abbiamo usato ng-template.
"altrimenti" viene utilizzato per impostare la visualizzazione predefinita.
"controller" viene utilizzato per impostare il controller corrispondente per la visualizzazione.
Esempio
L'esempio seguente mostra l'utilizzo di tutte le direttive sopra menzionate.
testAngularJS.htm
<html>
<head>
<title>Angular JS Views</title>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js">
</script>
</head>
<body>
<h2>AngularJS Sample Application</h2>
<div ng-app = "mainApp">
<p><a href = "#addStudent">Add Student</a></p>
<p><a href = "#viewStudents">View Students</a></p>
<div ng-view></div>
<script type = "text/ng-template" id = "addStudent.htm">
<h2> Add Student </h2>
{{message}}
</script>
<script type = "text/ng-template" id = "viewStudents.htm">
<h2> View Students </h2>
{{message}}
</script>
</div>
<script>
var mainApp = angular.module("mainApp", ['ngRoute']);
mainApp.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/addStudent', {
templateUrl: 'addStudent.htm',
controller: 'AddStudentController'
})
.when('/viewStudents', {
templateUrl: 'viewStudents.htm',
controller: 'ViewStudentsController'
})
.otherwise({
redirectTo: '/addStudent'
});
}]);
mainApp.controller('AddStudentController', function($scope) {
$scope.message = "This page will be used to display add student form";
});
mainApp.controller('ViewStudentsController', function($scope) {
$scope.message = "This page will be used to display all the students";
});
</script>
</body>
</html>
Produzione
Apri il file testAngularJS.htm in un browser web e guarda il risultato.