Как использовать две службы AngularJS с одинаковым именем из разных модулей?

предполагается, что у меня есть два модуля для AngularJS, например foo и bar, и оба они определяют службу под названием baz.

в моем приложении я полагаюсь на них, говоря:

var app = angular.module('app', [ 'foo', 'bar' ]);

тогда я могу попробовать использовать baz обслуживание в контроллере с помощью

app.controller('blaController', [ '$scope', 'baz', function($scope, baz) {
  // ...
}]);

как я могу определить, какую из двух услуг я хотел бы использовать? Есть ли что-то вроде полного имени?

1 ответов


локатор служб ищет службы по имени (angularjs руководство DI). Однако службы"пространства имен" в AngularJS:

на сегодняшний день AngularJS не обрабатывает конфликты пространств имен для служб поэтому, если у вас есть 2 разных модуля с одноименным сервисом путь и вы включаете оба модуля в ваше приложение, только одна услуга будет доступный.

Я думаю, что вы можете сделать полное имя "вручную": назовите услугу foo.baz и bar.baz вместо baz. Это своего рода самообман. Более того, такая запись не делает пространство имен реальным, но другой человек, который читает код, может так подумать.