Как использовать две службы 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
. Это своего рода самообман. Более того, такая запись не делает пространство имен реальным, но другой человек, который читает код, может так подумать.