Guida per principianti su AngularJS - Modulo d'ordine
Ciao là, futuri maghi di AngularJS! Oggi ci imbarcheremo in un viaggio emozionante nel mondo dei moduli d'ordine di AngularJS. Non preoccuparti se non hai mai scritto una riga di codice prima – inizieremo dalle basi e lavoreremo fino ad arrivarci. Alla fine di questo tutorial, sarai in grado di creare moduli d'ordine dinamici come un professionista!
Cos'è AngularJS?
Prima di immergerci nei moduli d'ordine, prendiamo un momento per capire cos'è AngularJS. Immagina di costruire una casa. HTML è come i mattoni e il cemento, CSS è la vernice e i decori, e AngularJS? Beh, è come il sistema smart home che rende tutto interattivo e dinamico.
AngularJS è un framework JavaScript che estende HTML con nuovi attributi, rendendolo perfetto per creare applicazioni web dinamiche. È come dare superpoteri al tuo HTML statico!
Configurazione del nostro progetto
Prima di tutto, configuriamo il nostro progetto. Dobbiamo includere la libreria AngularJS nel nostro file HTML. Ecco come facciamo:
<!DOCTYPE html>
<html ng-app="orderApp">
<head>
<title>Il mio modulo d'ordine AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<!-- Il nostro modulo andrà qui -->
<script src="app.js"></script>
</body>
</html>
In questo codice, stiamo facendo alcune cose importanti:
- Abbiamo aggiunto
ng-app="orderApp"
al tag<html>
. Questo dice ad AngularJS che questo è l'elemento radice della nostra applicazione. - Abbiamo incluso la libreria AngularJS utilizzando un tag
<script>
. - Abbiamo anche incluso il nostro file JavaScript (
app.js
) dove scriveremo il nostro codice AngularJS.
Creazione del modulo e del controller AngularJS
Ora, creiamo il nostro file app.js
e configuriamo il nostro modulo e controller AngularJS:
var app = angular.module('orderApp', []);
app.controller('OrderController', function($scope) {
$scope.order = {
items: [],
total: 0
};
});
Ecco cosa sta succedendo:
- Stiamo creando un modulo AngularJS chiamato 'orderApp'.
- Stiamo definendo un controller chiamato 'OrderController'.
- Dentro il controller, stiamo inizializzando un oggetto
order
sul$scope
. Questo oggetto terrà i nostri articoli d'ordine e il totale.
Creazione del modulo d'ordine
Ora, creiamo il nostro modulo d'ordine in HTML:
<div ng-controller="OrderController">
<h2>Effettua il tuo ordine</h2>
<form>
<label>Nome articolo: <input type="text" ng-model="newItem.name"></label><br>
<label>Prezzo: $<input type="number" ng-model="newItem.price"></label><br>
<button ng-click="addItem()">Aggiungi articolo</button>
</form>
<h3>Riepilogo ordine</h3>
<ul>
<li ng-repeat="item in order.items">
{{item.name}} - ${{item.price}}
<button ng-click="removeItem($index)">Rimuovi</button>
</li>
</ul>
<p Totale: ${{order.total}}</p>
</div>
Ecco una spiegazione dettagliata:
- Stiamo utilizzando
ng-controller
per associare questa sezione al nostro OrderController. - Abbiamo campi di input per il nome dell'articolo e il prezzo, utilizzando
ng-model
per legarli anewItem.name
enewItem.price
. - Abbiamo un pulsante "Aggiungi articolo" che chiama una funzione
addItem()
quando viene cliccato. - Stiamo utilizzando
ng-repeat
per visualizzare ogni articolo nell'ordine. - Ogni articolo ha un pulsante "Rimuovi" che chiama una funzione
removeItem()
. - Stiamo visualizzando l'importo totale dell'ordine.
Implementazione della logica del controller
Ora, aggiungiamo le funzioni necessarie al nostro controller:
app.controller('OrderController', function($scope) {
$scope.order = {
items: [],
total: 0
};
$scope.newItem = {name: '', price: ''};
$scope.addItem = function() {
$scope.order.items.push({
name: $scope.newItem.name,
price: parseFloat($scope.newItem.price)
});
$scope.calculateTotal();
$scope.newItem = {name: '', price: ''};
};
$scope.removeItem = function(index) {
$scope.order.items.splice(index, 1);
$scope.calculateTotal();
};
$scope.calculateTotal = function() {
$scope.order.total = $scope.order.items.reduce(function(sum, item) {
return sum + item.price;
}, 0);
};
});
Ecco cosa fa ogni funzione:
-
addItem()
: Aggiunge un nuovo articolo all'ordine, calcola il nuovo totale e resetta i campi di input. -
removeItem()
: Rimuove un articolo dall'ordine e recalcola il totale. -
calculateTotal()
: Somma i prezzi di tutti gli articoli nell'ordine.
Miglioramento dell'esperienza utente
Per rendere il nostro modulo più user-friendly, aggiungiamo alcune validazioni:
<form name="orderForm" ng-submit="addItem()" novalidate>
<label>Nome articolo: <input type="text" ng-model="newItem.name" required></label><br>
<label>Prezzo: $<input type="number" ng-model="newItem.price" min="0" step="0.01" required></label><br>
<button type="submit" ng-disabled="orderForm.$invalid">Aggiungi articolo</button>
</form>
E aggiorniamo il nostro controller:
$scope.addItem = function() {
if ($scope.orderForm.$valid) {
$scope.order.items.push({
name: $scope.newItem.name,
price: parseFloat($scope.newItem.price)
});
$scope.calculateTotal();
$scope.newItem = {name: '', price: ''};
$scope.orderForm.$setPristine();
}
};
Questi cambiamenti:
- Aggiungono la validazione del modulo per assicurarsi che tutti i campi siano riempiti e che il prezzo sia un numero positivo.
- Disabilitano il pulsante "Aggiungi articolo" quando il modulo è invalido.
- Aggiungono l'articolo solo se il modulo è valido.
- Reimpostano il modulo al suo stato originario dopo aver aggiunto un articolo.
Conclusione
Congratulazioni! Hai appena costruito un modulo d'ordine funzionale in AngularJS. Abbiamo coperto le basi di AngularJS, inclusi moduli, controller, due-way data binding e validazione del modulo. Ricorda, la pratica fa la perfezione, quindi non aver paura di sperimentare e ampliare questo modulo. Forse aggiungi una funzione di sconto o la possibilità di salvare gli ordini? Le possibilità sono infinite!
Ecco una tabella che riassume le principali direttive AngularJS che abbiamo utilizzato:
Direttiva | Scopo |
---|---|
ng-app | Definisce l'elemento radice di un'applicazione AngularJS |
ng-controller | Specifica un controller per una sezione dell'applicazione |
ng-model | Crea un binding bidirezionale dei dati |
ng-click | Specifica una funzione da eseguire quando un elemento viene cliccato |
ng-repeat | Ripete un elemento per ogni voce in una collezione |
ng-submit | Specifica una funzione da eseguire quando un modulo viene inviato |
ng-disabled | Disabilita un elemento in base a una condizione |
Buon coding, e ricorda – ogni esperto era una volta un principiante. Continua a praticare, e diventerai un maestro di AngularJS in pochissimo tempo!
Credits: Image by storyset