Хотя Angular предоставляет много полезных услуг, в некоторых специальных приложениях мы найдем полезным для написания пользовательских услуг. Если мы хотим сделать это, нам сначала необходимо зарегистрировать метод сервисного завода в модуле, который можно напрямую пройти через модуль. Фактория API (http://docs.angularjs.org/api/angular.module) или непосредственно проходит через $ предоставление API (http://docs.angularjs.org/api/auto. $.
Все угловые услуги участвуют в di (//www.vevb.com/article/91775.htm), вы можете либо зарегистрироваться с помощью имени (ID) в системе Angular DI (инжектор), либо объявить зависимости от существующих услуг другими заводскими методами.
1. Регистрация услуг
Чтобы зарегистрировать службу, мы должны иметь модуль и сделать этот сервер частью этого модуля. Затем мы можем зарегистрировать службу через API модуля или в функции конфигурации модуля. Следующий псевдокод покажет эти два метода регистрации.
Используйте Angular.Module API:
var mymodule = angular.module ('mymodule', []); mymodule.factory ('serviceId', function () {var someService; // Фабричный метод корпус метода, постройте что -то возвращение someService;});Используйте $ предоставить услугу:
angular.module ('mymodule', [], function ($ предоставление) {$ предоставление. factory ('serviceId', function () {var someService; // Фабричный метод кузов метода, построить что -то возвращение someService;});});Обратите внимание, что нам не нужно регистрировать экземпляр службы, вместо этого метод завода будет создаваться при его вызвании.
2. Зависимости
Сервис может не только зависимой, но и имеет свои собственные зависимости. Зависимости могут быть указаны в параметрах заводского метода. Reade (//www.vevb.com/article/91775.htm) Подробнее о DI в Angular, использование меток массива и атрибут $ Inject, чтобы сделать DI объявления более краткими. (Узнайте больше о DI в угловой и использовании обозначения массива и $ Inject, чтобы сделать DINTATION MINICATION.
Вот очень простой пример сервиса. Эта услуга опирается на услуги $ Window (передача через параметры метода завода) и имеет только один метод. Эта служба просто хранит все уведомления, после третьей, эта служба будет отображать все уведомления через Window.alert.
<! Doctype html> <html lang = "zh-cn" ng-app = "mainApp"> <head> <meta charset = "utf-8"> <tite> services </title> </head> <body> <div ng-controller = "myController"> <Input = "text" ng-model = "msg"/> <myController " ng-click="saveMsg()">save msg</button> <ul> <li ng-repeat="msg in msgs">{{msg}}</li> </ul></div><script src="../angular-1.0.1.js" type="text/javascript"></script><script type="text/javascript"> var app = Angular.Module ("maneApp", [], function ($ предоставление) {$ предоставление. factory ("notify", ["$ window", "$ timeout", function (win, timeout) {var msgs = []; return function (msg) {msgs.push (msg); if (msgs.length = 3) {timeout () {) win.alert (msgs.join ("/n"); app.controller ("mycontroller", function ($ scope, notify) {$ scope.msgs = []; $ scope.savemsg = function () {this.msgs.push (this.msg); уведомление (this.msg); this.msg = "";};});3. Сумманирование угловых услуг
Все услуги в угловании лениво создаются. Это означает, что сервис создается только тогда, когда другие экземпляры или компоненты приложений, которые зависят от нее, зависят. Другими словами, Angular не будет создавать службу до тех пор, пока служба не будет запрошена прямо или косвенно.
4. Услуги как синглтоны
Наконец, мы должны понимать, что все угловые услуги являются приложением Singleton. Это означает, что у каждого инжектора есть только один экземпляр данной службы. Поскольку Angular чрезвычайно раздражает, чтобы уничтожить глобальное состояние, возможно создавать несколько инжекторов, чтобы каждый имел экземпляр указанного сервиса. За исключением сильного спроса в тестировании, как правило, мало таких потребностей.
Выше приведено информация об угловых услугах. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!