Для начала определим модель данных товара в нашем AngularJS приложении. Каждый товар будет иметь название, описание и цену. Мы можем использовать объект JavaScript для представления каждого товара:
var products = [
{name: ‘Товар 1’, description: ‘Описание товара 1’, price: 10},
{name: ‘Товар 2’, description: ‘Описание товара 2’, price: 20},
{name: ‘Товар 3’, description: ‘Описание товара 3’, price: 30}
];
Пример кода:
angular.module('myApp', []) // Создаем модуль приложения.controller('ProductListController', function() { // Создаем контроллерvar vm = this; // Привязываем this к переменной vmvm.products = [{name: 'Товар 1', price: 10},{name: 'Товар 2', price: 20},{name: 'Товар 3', price: 30}]; // Создаем массив товаров});
В этом примере мы создаем модуль myApp и контроллер ProductListController. В контроллере мы создаем переменную vm и привязываем ее к this, чтобы иметь доступ к ней внутри функций контроллера. Затем мы создаем массив товаров в переменной products.
Теперь, когда данные о товарах готовы, мы можем использовать директиву ng-repeat, чтобы вывести их на веб-странице.
Пример кода:
<div ng-app="myApp"><div ng-controller="ProductListController as productList"><ul><li ng-repeat="product in productList.products">{{ product.name }} - {{ product.price }}</li></ul></div></div>
Изучение основ AngularJS
Для начала работы с AngularJS вам потребуется подключить его к вашему проекту. Это можно сделать с помощью тега <script>
, указав путь к файлу с библиотекой AngularJS.
После подключения AngularJS вы можете использовать его директивы для создания интерактивных элементов на вашей веб-странице. Директивы — это специальные атрибуты, которые добавляются к обычным тегам HTML и определяют их поведение.
Одной из самых часто используемых директив является ng-app
. Она используется для определения главного модуля вашего приложения.
AngularJS также предоставляет возможность использовать контроллеры, которые помогают организовать логику вашего приложения и управлять данными. Контроллеры определяются с помощью директивы ng-controller
, которая указывает на функцию контроллера, определенную в вашем JavaScript-коде.
После определения контроллера, вы можете использовать его в вашей веб-странице с помощью директивы ng-model
, которая связывает значение элемента формы с моделью данных, управляемой контроллером.
Кроме того, AngularJS предоставляет множество других полезных директив, таких как ng-repeat
для создания повторяющихся элементов списка, ng-show
и ng-hide
для отображения и скрытия элементов в зависимости от значения модели данных и многое другое.
Изучение основ AngularJS — это только начало вашего пути в изучении этого мощного фреймворка. С его помощью вы сможете создать сложные и удобные веб-приложения, которые будут взаимодействовать с пользователем и обрабатывать данные.
Структура приложения AngularJS
Приложение AngularJS обычно состоит из нескольких основных компонентов:
1. Модули (Modules): Модули представляют собой контейнеры, в которых объединяются различные компоненты приложения, такие как контроллеры, сервисы, фильтры и директивы. Модули позволяют логически организовать и структурировать приложение.
2. Контроллеры (Controllers): Контроллеры определяют логику и поведение отображаемых данных на странице. Они связываются с определенными элементами DOM и обрабатывают пользовательские действия, такие как клики и вводы текста.
3. Сервисы (Services): Сервисы используются для обработки бизнес-логики и выполнения асинхронных операций. Они предоставляют различные методы и функциональности, которые можно использовать в контроллерах и других компонентах приложения.
4. Фильтры (Filters): Фильтры представляют собой функции, которые позволяют форматировать и фильтровать данные перед их отображением. Они могут использоваться для преобразования формата даты, чисел и других типов данных.
5. Директивы (Directives): Директивы предоставляют специальные инструкции для изменения поведения и внешнего вида элементов DOM. Они позволяют создавать собственные элементы, атрибуты или классы, что облегчает создание повторно используемых компонентов и добавление специфического поведения на странице.
6. Маршрутизация (Routing): Маршрутизация позволяет определять, какие компоненты должны отображаться на странице в зависимости от текущего URL. Это удобно для создания одностраничных приложений, где содержимое обновляется динамически без перезагрузки всей страницы.
7. Страницы (Views): Представления отображают данные и содержимое на странице. Они могут быть созданы с использованием шаблонов HTML, в которых можно использовать AngularJS-специфичные выражения и директивы для отображения данных.
Компоненты приложения могут быть организованы и структурированы по различным файлам и каталогам в зависимости от сложности приложения и предпочтений разработчика. Однако рекомендуется следовать общепринятым практикам и стандартам, таким как MVC (Model-View-Controller) или MVVM (Model-View-ViewModel), для более логической и понятной структуры приложения.
Получение данных о товарах
Пример использования $http для получения данных о товарах:
app.controller('ProductController', function($http) {var vm = this;vm.products = [];$http.get('/api/products').then(function(response) {vm.products = response.data;});});
В данном примере создается контроллер ProductController, который использует сервис $http для получения данных о товарах. Массив vm.products инициализируется пустым массивом, затем выполняется GET-запрос на URL ‘/api/products’. Полученный ответ сохраняется в поле response.data и присваивается массиву vm.products.
<ul><li ng-repeat="product in vm.products"><strong>{{ product.name }}</strong><em>{{ product.price }}</em></li></ul>
Фильтрация и сортировка списка товаров
В AngularJS для фильтрации и сортировки списка товаров можно использовать директиву ng-repeat. Для фильтрации можно добавить директиву ng-model и ng-filter. Например:
<input type="text" ng-model="search" placeholder="Поиск по товарам"><ul><li ng-repeat="item in items | filter:search">{{item.name}} - {{item.price}} руб.</li></ul>
Теперь при вводе текста в поле ввода будут отображаться только товары, у которых в имени или описании есть введенный текст.
Для сортировки можно использовать директиву ng-sortBy. Например, для сортировки по цене возрастанию:
<select ng-model="sortType"><option value="price">Цена (возрастание)</option><option value="-price">Цена (убывание)</option></select><ul><li ng-repeat="item in items | orderBy:sortType">{{item.name}} - {{item.price}} руб.</li></ul>
Теперь при выборе значения в выпадающем списке товары будут сортироваться по цене в соответствии с выбранным значением.
Таким образом, с помощью директив ng-repeat, ng-model, ng-filter и ng-sortBy в AngularJS можно реализовать фильтрацию и сортировку списка товаров в зависимости от заданных критериев.
Отображение списка товаров на странице
Для отображения списка товаров на странице в AngularJS можно использовать директиву ng-repeat. Данная директива позволяет проходить по элементам массива и создавать HTML-элементы для каждого из них.
Пример использования директивы ng-repeat:
<div ng-controller="ProductsController"><ul><li ng-repeat="product in products">{{ product.name }}</li></ul></div>
В данном примере используется контроллер ProductsController, который содержит массив products с информацией о товарах. Директива ng-repeat применяется к элементу <li> и повторяется для каждого элемента массива products. Внутри директивы можно использовать фигурные скобки {{ … }} для отображения свойств каждого товара, например, {{ product.name }}.
После запуска приложения в браузере список товаров будет отображаться в виде маркированного списка. При изменении массива products, например, при добавлении или удалении товаров, список автоматически обновится.
Реактивное обновление списка товаров
Для реализации реактивного обновления списка товаров в AngularJS, необходимо использовать директиву ng-repeat. Эта директива позволяет повторить элементы в HTML-шаблоне для каждого элемента массива данных.
<ul><li ng-repeat="product in products">{{ product.name }} - {{ product.price }}</li></ul>
В данном примере, для каждого элемента массива products будет создан элемент списка li, в котором будет отображено имя и цена товара. Если массив products будет изменен (например, добавлен новый товар), то интерфейс автоматически обновится.
Для того чтобы изменить список товаров, можно использовать контроллер AngularJS. В контроллере можно определить массив products и добавлять или удалять товары из этого массива.
Пример контроллера с массивом products:
app.controller('ProductController', function($scope) {$scope.products = [{ name: 'Товар 1', price: 100 },{ name: 'Товар 2', price: 200 },{ name: 'Товар 3', price: 300 }];$scope.addProduct = function() {$scope.products.push({ name: 'Новый товар', price: 0 });};$scope.removeProduct = function(index) {$scope.products.splice(index, 1);};});
В данном примере определен контроллер ProductController, в котором определен массив products, а также функции addProduct и removeProduct для добавления и удаления товара соответственно.
Таким образом, при изменении массива products, интерфейс автоматически обновится, и список товаров будет реактивно обновляться.
Для того чтобы вывести список товаров на странице с использованием AngularJS, необходимо создать контроллер, определить массив с товарами и использовать директиву ng-repeat.
Вот пример кода:
<div ng-app="myApp" ng-controller="myCtrl"><h3>Список товаров:</h3><ul><li ng-repeat="item in items"><strong>{{ item.name }}</strong> - <em>{{ item.price }}</em> руб.</li></ul></div><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script><script>var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {$scope.items = [{name: 'Товар 1', price: 100},{name: 'Товар 2', price: 200},{name: 'Товар 3', price: 300}];});</script>
В данном примере создается AngularJS-приложение с модулем «myApp» и контроллером «myCtrl». В контроллере определяется массив $scope.items с товарами, которые необходимо вывести на странице.
В результате, на странице будет выведен список товаров с их названиями и ценами, взятых из массива $scope.items.