Aplikacja AngularJS
Czas stworzyć prawdziwą aplikację AngularJS.
Zrobić listę zakupów
Wykorzystajmy niektóre funkcje AngularJS do stworzenia listy zakupów, na której możesz dodawać lub usuwać elementy:
Moja lista zakupów
- mleko×
- Chleb×
- Ser×
Objaśnienie aplikacji
Krok 1. Pierwsze kroki:
Zacznij od stworzenia aplikacji o nazwie myShoppingList
i dodaj myCtrl
do niej nazwany kontroler.
Kontroler dodaje tablicę o nazwie products
do bieżącego
$scope
.
W HTML używamy ng-repeat
dyrektywy, aby wyświetlić listę za pomocą elementów w tablicy.
Przykład
Do tej pory stworzyliśmy listę HTML opartą na elementach tablicy:
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products
= ["Milk", "Bread", "Cheese"];
});
</script>
<div ng-app="myShoppingList"
ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">{{x}}</li>
</ul>
</div>
Krok 2. Dodawanie przedmiotów:
W HTML dodaj pole tekstowe i powiąż je z aplikacją za pomocą ng-model
dyrektywy.
W kontrolerze utwórz funkcję o nazwie addItem
i użyj wartości addMe
pola wejściowego, aby dodać element do products
tablicy.
Dodaj przycisk i nadaj mu ng-click
dyrektywę, która uruchomi addItem
funkcję po kliknięciu przycisku.
Przykład
Teraz możemy dodać pozycje do naszej listy zakupów:
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products
= ["Milk", "Bread", "Cheese"];
$scope.addItem = function () {
$scope.products.push($scope.addMe);
}
});
</script>
<div ng-app="myShoppingList"
ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">{{x}}</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">Add</button>
</div>
Krok 3. Usuwanie elementów:
Chcemy również mieć możliwość usuwania pozycji z listy zakupów.
W kontrolerze utwórz funkcję o nazwie removeItem
, która jako parametr przyjmuje indeks elementu, który chcesz usunąć.
W HTML utwórz <span>
element dla każdego elementu i nadaj mu ng-click
dyrektywę, która wywołuje removeItem
funkcję z bieżącym $index
.
Przykład
Teraz możemy usunąć pozycje z naszej listy zakupów:
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products
= ["Milk", "Bread", "Cheese"];
$scope.addItem = function () {
$scope.products.push($scope.addMe);
}
$scope.removeItem = function (x) {
$scope.products.splice(x, 1);
}
});
</script>
<div ng-app="myShoppingList"
ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">
{{x}}<span ng-click="removeItem($index)">×</span>
</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">Add</button>
</div>
Krok 4. Obsługa błędów:
Aplikacja ma pewne błędy, na przykład jeśli spróbujesz dodać ten sam element dwa razy, aplikacja się zawiesi. Ponadto nie powinno być dozwolone dodawanie pustych pozycji.
Naprawimy to, sprawdzając wartość przed dodaniem nowych pozycji.
W kodzie HTML dodamy kontener na komunikaty o błędach i napiszemy komunikat o błędzie, gdy ktoś spróbuje dodać istniejący element.
Przykład
Lista zakupów, z możliwością wpisania komunikatów o błędach:
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products
= ["Milk", "Bread", "Cheese"];
$scope.addItem = function () {
$scope.errortext = "";
if (!$scope.addMe) {return;}
if ($scope.products.indexOf($scope.addMe)
== -1) {
$scope.products.push($scope.addMe);
} else {
$scope.errortext = "The item is already
in your shopping list.";
}
}
$scope.removeItem = function (x) {
$scope.errortext = "";
$scope.products.splice(x, 1);
}
});
</script>
<div ng-app="myShoppingList"
ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">
{{x}}<span ng-click="removeItem($index)">×</span>
</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">Add</button>
<p>{{errortext}}</p>
</div>
Krok 5. Projekt:
Aplikacja działa, ale przydałaby się lepsza konstrukcja. Do stylizacji naszej aplikacji używamy arkusza stylów W3.CSS.
Dodaj arkusz stylów W3.CSS i uwzględnij odpowiednie klasy w całej aplikacji, a wynik będzie taki sam, jak lista zakupów na górze tej strony.
Przykład
Stylizuj swoją aplikację za pomocą arkusza stylów W3.CSS:
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">