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
Gestione degli eventi nei Web component HTML
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Creare una libreria CSS universale: Clip-path
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Anonimizzare i dati sensibili nei log di Azure Front Door
Ricevere notifiche sui test con Azure Load Testing
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Gestire progetti NPM in .NET Aspire
Eseguire script pre e post esecuzione di un workflow di GitHub
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione ciclo di vita in .NET Aspire
- The Agentic Day - Milano
- Gestione file Javascript in Blazor con .NET 9