Приложение AngularJS
Пришло время создать настоящее приложение AngularJS.
Составьте список покупок
Давайте используем некоторые функции AngularJS для создания списка покупок, в который вы можете добавлять или удалять элементы:
Мой список покупок
- Молоко×
- Хлеб×
- Сыр×
Объяснение применения
Шаг 1. Начало работы:
Начните с создания приложения с именем myShoppingList
и добавьте к myCtrl
нему контроллер с именем.
Контроллер добавляет массив с именем products
к текущему
$scope
.
В HTML мы используем ng-repeat
директиву для отображения списка с использованием элементов массива.
Пример
До сих пор мы создали список HTML на основе элементов массива:
<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>
Шаг 2. Добавление элементов:
В HTML добавьте текстовое поле и привяжите его к приложению с помощью ng-model
директивы.
В контроллере создайте функцию с именем addItem
и используйте значение поля addMe
ввода, чтобы добавить элемент в products
массив.
Добавьте кнопку и дайте ей ng-click
директиву, которая будет запускать addItem
функцию при нажатии кнопки.
Пример
Теперь мы можем добавить товары в наш список покупок:
<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>
Шаг 3. Удаление элементов:
Мы также хотим иметь возможность удалять элементы из списка покупок.
В контроллере создайте функцию с именем removeItem
, которая принимает в качестве параметра индекс элемента, который вы хотите удалить.
В HTML создайте <span>
элемент для каждого элемента и дайте им ng-click
директиву, которая вызывает removeItem
функцию с текущим $index
.
Пример
Теперь мы можем удалить элементы из нашего списка покупок:
<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>
Шаг 4. Обработка ошибок:
В приложении есть некоторые ошибки, например, если вы пытаетесь добавить один и тот же элемент дважды, приложение вылетает. Кроме того, нельзя допускать добавления пустых элементов.
Мы исправим это, проверив значение перед добавлением новых элементов.
В HTML мы добавим контейнер для сообщений об ошибках и напишем сообщение об ошибке, когда кто-то попытается добавить существующий элемент.
Пример
Список покупок с возможностью написания сообщений об ошибках:
<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>
Шаг 5. Дизайн:
Приложение работает, но можно было бы использовать дизайн получше. Мы используем таблицу стилей W3.CSS для оформления нашего приложения.
Добавьте таблицу стилей W3.CSS и включите соответствующие классы в приложение, и результат будет таким же, как в списке покупок в верхней части этой страницы.
Пример
Оформите свое приложение с помощью таблицы стилей W3.CSS:
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">