Angular permite que o serviço declare outros serviços como dependências, usando o construtor usado ao se instanciar.
Para declarar dependências, precisamos especificá -las na declaração do método da fábrica e usar o atributo $ injetar (matriz de identificação de string) ou usar a notação da matriz no método da fábrica.
Geralmente, a declaração de propriedade de injeção pode ser descartada (ou seja, a injeção implícita de dependência mencionada em //www.vevb.com/article/91815.htm, mas essa é uma propriedade experimental e falhará após a compressão e a ofuscação, use -a com cautela!).
Use a notação da matriz
função myModuleCfgfn ($ fornece) {$ fornece.factory ('myService', ['dep1', 'dep2', função (dep1, dep2) {}]);}Use a propriedade $ inject
função myModuleCfgfn ($ fornece) {var myServiceFactory = function (dep1, dep2) {}; myServiceFactory. $ inject = ['dep1', 'dep2']; $ fornece.Factory ('MyService', MyServiceFactory); }Usando DI implícito (incompatível com o código ofuscado de compressão)
função myModuleCfgfn ($ fornece) {$ fornece.Factory ('MyService', function (dep1, dep2) {});}Aqui está um exemplo em que existem dois serviços e há dependências entre eles, bem como alguns outros serviços prestados pela Angular.
/*** O serviço Batchlog permite que as mensagens formem uma fila na memória, lavando uma vez a cada 50 segundos. * * @param { *} mensagem de mensagem a ser registrada. */ function BatchLogModule ($ fornece) {$ fornece.Factory ('Batchlog', ['$ timeout', '$ log', function ($ timeout, $ log) {var messageQueue = []; function Log () {if (messageUe.Length) {$ Log ('Batchlog messages:',,); log (); /** * routeTemplateMonitor monitors the changes of each route, and each Bi'anu will record it through the batchLog service*/ $provide.factory('routeTemplateMonitor', ['$route', 'batchLog', '$rootScope', function($route, batchLog, $rootScope) { $rootScope.$on('$routeChangeSuccess', function() { Batchlog ($ rota.Current? $ rota.Current.Template: NULL); } // Obtenha o serviço principal, execute o aplicativo (ouça o evento) angular.injector ([BatchLogModule]). Get ('RouteTemplateMonitor');Coisas a serem observadas no exemplo:
O exposto acima é a compilação de informações de dependências de serviço do AngularJS. Continuaremos a adicionar informações relevantes no futuro. Obrigado pelo seu apoio a este site!