Maak een eenvoudig winkelwagentje met AngularJS deel 1

In deze tutorialserie zullen we zien hoe we een eenvoudig winkelwagentje kunnen maken met AngularJS. Deze tutorialserie zal zich richten op het gebruik van AngularJS-richtlijnen. AngularJS-richtlijnen vormen het kernonderdeel van AngularJS en ze geven speciaal gedrag aan de HTML. Van de officiële documenten:

Op een hoog niveau zijn richtlijnen markeringen op een DOM-element (zoals een kenmerk, elementnaam, opmerking of CSS-klasse) die de HTML-compiler van AngularJS vertellen ($ compile) om een ​​bepaald gedrag aan dat DOM-element te koppelen of zelfs het DOM-element en de onderliggende elementen te transformeren.

Een winkelwagenpagina ontwerpen

We zullen Bootstrap gebruiken om onze pagina te ontwerpen. Zodra we klaar zijn met onze door Bootstrap ontworpen pagina, zullen we deze integreren in onze AngularJS-applicatie. Tijdens het ontwerpen van de pagina zullen we niet ingaan op veel details van Bootstrap, maar we zullen ons op enkele kritieke punten concentreren.

Maak een pagina met de naam index.html. Download en voeg de Bootstrap-bestanden toe aan index.html.

      Bootstrap winkelkar        

Binnen in de .houder div, maak een .rij div. 

In de index.html pagina hebben we twee kolommen. Men heeft een lijst met items met prijzen weergegeven, en de andere kolom heeft de Totaal div. Laten we de twee kolommen maken.

Laten we nu in de eerste kolom enkele items en opties toevoegen.

Paneeltitel

Herhaal de bovenstaande HTML-code een paar keer in de eerste kolom om nog een paar items te hebben. Voeg in de tweede kolom de volgende HTML-code toe om de som van de prijs van geselecteerde items weer te geven.

Totaal

Rs. 100

Uitchecken

Sla de wijzigingen op en blader index.html. Het zou er als volgt uit moeten zien:

Het ziet er prima uit. Maar een ding dat we moeten oplossen, is het maken van de Totaal div hersteld, zodat het niet beweegt wanneer we door de browser scrollen. Om dit op te lossen, gebruiken we de component Bootstrap JavaScript, Affix.

Zorg er eerst voor dat je het Bootstrap JavaScript-bestand hebt toegevoegd. Voeg het toe om het affix-gedrag toe te voegen data-spy = "bevestigen" toeschrijven aan de Totaal div. Optioneel kunnen we ook de positie aangeven die we willen dat deze wordt aangebracht, dus laten we deze op een bepaalde hoogte vanaf de bovenkant houden door toe te voegen -Offset data-top = "20". Nu, als je bladert index.html en probeer in de browser te scrollen, het totaal blijft bovenaan en altijd zichtbaar.

Een winkelwagen-app maken

Een node-server maken

Tijdens het maken van onze AngularJS-app maken we gebruik van de ngView-instructie om van weergave te wisselen. Dus we zullen de AngularJS-applicatie moeten uitvoeren met behulp van een server. Daarom gebruiken we een Node.js-server.

Laten we beginnen met het creëren van een directory voor ons project genaamd Winkelwagen. Binnen Winkelwagen maak een bestand aan met de naam server.js. We zullen Express, een NodeJS webapplicatieframework, gebruiken om de pagina's te renderen. Dus installeer uitdrukken gebruik makend van NPM.

npm install express

Nadat express is geïnstalleerd, opent u server.js, hebt u express nodig en maakt u een app.

'gebruik strikt' var express = require ('express'); var app = express ();

We houden onze AngularJS-bestanden in een aparte map met de naam openbaar. Maak een map met de naam openbaar. Binnen server.js definieer de /openbaar en / node_modules pad.

app.use ('/ public', express.static (__ dirname + '/ public')); app.use ('/ node_modules', express.static (__ dirname + '/ node_modules'));

Bind de toepassing vervolgens aan een lokaal poortadres.

app.listen ('3000', function () console.log ('Server draait op http: // localhost: 3000 !!'))

Start nu de Node.js-server en u zou het servergestarte bericht in de terminal moeten krijgen.

knooppunt server.js

Maar als u probeert te bladeren door http: // localhost: 3000, wordt de fout weergegeven Kan niet krijgen / omdat we nog geen routes hebben gedefinieerd.

Een AngularJS-app maken

Binnen in de openbaar map maak een pagina genaamd main.html. Dit zal dienen als ons basissjabloonbestand. Kopieer eenvoudig het index.html pagina die we eerder hebben gemaakt main.html. Van main.html verwijder de inhoud in het lichaam. 

Download AngularJS en voeg het toe main.html. Voeg de ngApp-richtlijn toe aan de bovenkant van de HTML-tag.

Binnen in de main.html body, voeg een div toe met de opdracht ngView. Na het maken van alle bovenstaande wijzigingen, hier is hoe main.html ziet:

   Bootstrap winkelkar       

Laten we nu onze standaardpagina definiëren die moet worden weergegeven wanneer de knooppuntserver wordt gestart. Open ShoppingCart / server.js en voeg de volgende applicatieroute toe om door te verwijzen naar de main.html pagina.

app.get ('/', functie (req, res) res.sendFile ('main.html', 'root': __ dirname + '/ public');)

Sla de wijzigingen op en start de knooppuntserver opnieuw op. Richt uw browser op http: // localhost: 3000 en u zou in staat moeten zijn om een ​​blanco pagina te bekijken, in tegenstelling tot de vorige keer dat er een fout was in dezelfde route.

Een winkelwagenweergave en route maken

Laten we vervolgens het ontwerp van de winkelwagen integreren in de AngularJS-app. Binnen in de openbaar map maak een andere map genaamd kar. Binnen kar maak twee bestanden, cart.html en cart.js. Op onze Bootstrap ontwerppagina genoemd index.html, kopieer de inhoud in het lichaam en plak het in cart.html.

We zullen vereisen ngRoute, dus installeer het met NPM.

npm installeer hoek-route

Voeg na installatie een verwijzing toe naar hoekig-route in main.html.

Doe open cart.js en definieer de kar module.

angular.module ('winkelwagen', ['ngRoute'])

Zoals te zien is in de bovenstaande code, hebben we de ngRoute module, die we zullen gebruiken om de routes te definiëren.

.config (['$ routeProvider', function ($ routeProvider) $ routeProvider.when ('/ cart', templateUrl: 'public / cart / cart.html', controller: 'CartCtrl');])

De ... gebruiken ngRoute module, hebben we de / cart route met zijn respectieve sjabloon en controller. Definieer ook de CartCtrl controller binnen cart.js. Hier is hoe cart.js ziet:

'gebruik strikt'; angular.module ('cart', ['ngRoute']) .config (['$ routeProvider', function ($ routeProvider) $ routeProvider.when ('/ cart', templateUrl: 'public / cart / cart.html ', controller:' CartCtrl ');]) .controller (' CartCtrl ', [function () ]);

We hebben ook een rootbestand nodig om alle modules in onze AngularJS-applicatie te injecteren. Dus binnen de openbaar map maak een bestand aan met de naam app.js. Dit bestand zal dienen als het rootbestand voor de AngularJS-applicatie. Maak een nieuwe module genaamd winkelwagen binnen app.js en injecteer de cart-module erin.

angular.module ('shoppingCart', ['ngRoute', 'cart']).

Definieer de standaardroute voor de AngularJS-applicatie naar / cart binnen app.js.

'gebruik strikt'; angular.module ('shoppingCart', ['ngRoute', 'cart']). config (['$ routProvider', function ($ routeProvider) $ routeProvider.otherwise (redirectTo: '/ cart');]);

Voeg een verwijzing toe aan cart.js en app.js in de main.html pagina.

 

Sla alle wijzigingen op en start de server opnieuw op. Wijs uw browser naar http: // localhost: 3000 en u moet de winkelwagenpagina laten weergeven.

Nu, als u naar beneden scrolt op de pagina, de Totaal div blijft niet gefixeerd. Houd dit probleem in de gaten, we lossen het later in de serie op.

Een Checkout-weergave en -route maken

Maak in de openbare map een map met de naam uitchecken. Binnen in de uitchecken map, maak twee bestanden genaamd checkout.html en checkout.js. Open checkout.html en voeg de volgende HTML-code toe:

Citaat

processor Rs. 20000
Harde schijf Rs. 5000
Totaal: Rs. 25000
Aanpassen

Open checkout.js en maak de uitchecken module. Injecteer de ngRoute module en definieer de standaardsjabloon en de logica van de controller. Hier is hoe checkout.js eindelijk ziet er:

'gebruik strikt'; angular.module ('checkout', ['ngRoute']) .config (['$ routeProvider', function ($ routeProvider) $ routeProvider.when ('/ checkout', templateUrl: 'public / checkout / checkout.html ', controller:' CheckoutCtrl ');]) .controller (' CheckoutCtrl ', [' $ scope ', function ($ scope) ]);

Vermeld een verwijzing naar checkout.js in de main.html het dossier.

Injecteer de module uitchecken in app.js zodat de winkelwagen De AngularJS-applicatie is op de hoogte van deze module.

angular.module ('shoppingCart', ['ngRoute', 'cart', 'checkout']).

Sla de wijzigingen op en start de server opnieuw op. Richt uw browser op http: // localhost: 3000 / # / checkout en u zou de afrekenpagina kunnen zien.

Conclusie

In deze zelfstudie hebben we ons eenvoudige winkelwagentjeontwerp ontworpen en geïntegreerd in een AngularJS-toepassing. In het volgende deel van deze serie zullen we zien hoe u een aangepaste richtlijn kunt maken om de vereiste functionaliteit te implementeren.

Broncode van deze tutorial is beschikbaar op GitHub. Laat ons uw gedachten, correcties en suggesties weten in het opmerkingenveld hieronder!