Сервисы AngularJS (Service)
В AngularJS вы можете создавать собственные сервисы или использовать встроенные сервисы.
Что такое сервис?
В AngularJS сервис — это функция или объект, которые можно использовать в вашем приложении AngularJS.
В AngularJS более 30 встроенных сервисов.
Существует$locationсервис, который может возвращать URL-адрес текущей страницы.
Пример
app.controller('customersCtrl', function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Попробуйте »
Примечание$locationСервис передается в контроллер в качестве параметра. Чтобы использовать его, необходимо определить его в контроллере.
Зачем использовать сервисы?
Среди многих сервисов, таких как сервис $location, можно использовать объекты, существующие в DOM, подобно объекту window.location, но объект window.location имеет определенные ограничения в приложениях AngularJS.
AngularJS постоянно отслеживает приложение и обрабатывает изменения событий. AngularJS использует$locationсервисы вместо использованияwindow.locationобъектов, что лучше.
$location против window.location
| window.location | $location.service | |
|---|---|---|
| Назначение | Позволяет выполнять операции чтения и записи с текущим местоположением браузера | Позволяет выполнять операции чтения и записи с текущим местоположением браузера |
| API | Предоставляет объект, который можно читать и записывать | Предоставляет reader/writer в стиле jQuery |
| Интегрирован ли с жизненным циклом приложения AngularJS | нет | Может получать доступ к каждой стадии жизненного цикла приложения и интегрирован с $watch |
| Бесшовно ли интегрирован с HTML5 API | нет | Да (с плавной деградацией для старых браузеров) |
| Связан ли с контекстом приложения | Нет, window.location.path возвращает "/docroot/actual/path" | Да, $location.path() возвращает "/actual/path" |
Сервис $http
$httpЭто наиболее часто используемый сервис в приложениях AngularJS. Сервис отправляет запросы на сервер, а приложение реагирует на данные, переданные сервером.
Пример
Используйте$http-сервис для запроса данных с сервера:
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
});
Попробуйте »
Выше приведён очень простой$httpпример сервиса. Для более$httpсервисных приложений см.Учебник по AngularJS Http。
Сервис $timeout
AngularJS $timeoutСервис соответствует JS window.setTimeoutфункция.
Пример
Отобразить информацию через две секунды:
app.controller('myCtrl', function($scope, $timeout) {
$scope.myHeader = "Привет мир!";
$timeout(function () {
$scope.myHeader = "Как дела сегодня?";
}, 2000);
});
Попробуйте »
Сервис $interval
AngularJS $intervalСервис соответствует JSwindow.setIntervalфункции.
Пример
Отображение информации каждую секунду:
app.controller('myCtrl', function($scope, $interval) {
$scope.theTime = new Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
}, 1000);
});
Попробуйте »
Создание пользовательского сервиса
Вы можете создать пользовательский сервис и привязать его к вашему модулю:
Создайте сервис с именемhexafyсервис:
this.myFunc = function (x) {
return x.toString(16);
}
});
Чтобы использовать пользовательский сервис, нужно добавить его отдельно при определении контроллера и задать зависимость:
Пример
Используйте пользовательский сервисhexafyПреобразуйте число в шестнадцатеричное число:
$scope.hex = hexafy.myFunc(255);
});
Попробуйте »
Использование пользовательского сервиса в фильтре
После создания пользовательского сервиса и подключения его к приложению вы можете использовать его в контроллерах, директивах, фильтрах или других сервисах.
В фильтреmyFormatиспользуйте сервисhexafy:
return function(x) {
return hexafy.myFunc(x);
};
}]);
Попробуйте сами »
При получении значений в массиве объектов можно использовать фильтры:
Другие расширения