Quando un'app basata su AngularJS diventa complessa, entra in gioco la necessità di componentizzare i template e i rispettivi controller.
Generalmente questo obiettivo si ottiene dividendo le funzionalità all'interno di file, che poi gestiremo attraverso $routeProvider, che è fornito dal servizio $route. Il compito del servizio di routing è quello di unire controller, view e l'URL mostrato nel browser, consentendo anche di sfruttare la navigazione del browser, sia andando avanti ed indietro, sia puntando direttamente ad un URL.
Perché il servizio posso funzionare, dobbiamo include un riferimento a angular-route.js nella pagina principale (diciamo la classica index.html) e poi referenziare localmente nell'app.js il nostro servizio:
var myApp = angular.module('myApp', [
'ngRoute',
'myAppControllers'
]);E poi configurare le route:
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/list', {
templateUrl: 'views/orders/list.html',
controller: 'OrderListController'
}).
when('/details/:Id', {
templateUrl: 'views/orders/detail.html',
controller: 'OrderDetailController'
}).
otherwise({
redirectTo: '/'
});
}]);Quello che otterremo con questa configurazione è che:
- navigando verso list, allora sarà utilizzare il controller OrderListController e la view list.html, nel percorso specificato;
- navigando verso details/{id}, allora sarà utilizzare il controller OrderDetailController, a cui sarà passato il nostro ID e la view detail.html, nel percorso specificato;
- in caso contrario, il browser tornerà alla home attraverso un redirect
A tal proposito, per recuperare il parametro di navigazione, ci basterà utilizzare un codice come quello che segue, posto all'interno del codice caricato in fase di partenza del controller e recuperato con $routeParams:
var myAppControllers = angular.module('myAppControllers', []);
myAppControllers.controller('OrderDetailController', ['$scope', '$routeParams',
function($scope, $routeParams) {
$scope.id = $routeParams.id;
}]);Vedremo come, grazie a questa modifica, potremo utilizzare normalmente l'history del browser per navigare, consentendo all'utente di utilizzare in maniera più semplice la nostra applicazione web.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
GitHub Copilot CLI in ambienti offline
Costruire endpoint SSE in ASP.NET Core
Utilizzare i named query filter di Entity Framework
Validazione personalizzata nelle Minimal API di ASP.NET Core
Enterprise Live Migrations - Migrare da Azure DevOps a GitHub
Diagnosticare e monitorare Azure con Azure MCP Server
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Migrare applicazioni legacy nel cloud con Azure App Service Managed Instance
Gestione dei codeowners in GitHub
Structured Output con Microsoft.Extensions.AI: ottenere oggetti C# da un LLM
Interazione con ReconnectModal in Blazor
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


