Внедрение модуля, когда у вас есть доступ только к переменной модуля
Допустим, у вас есть
var app = angular.module('Mod1',[])
и теперь вам нужно вставить что-то еще в этот модуль, но вы не можете изменить эту строку, у вас есть доступ только к app
переменная.
Так что это не сработает, верно?
var mod2 = angular.module('mod2',[]).factory('$myService', function(){
return { do: function(){alert('doing'); }
})
app.directive('foo',[$myService]) // $myService here is undefined
Конечно, вы всегда можете сделать:
injector = angular.injector(['mod2'])
$myService = injector.get('$myService')
Хотя мне интересно, есть ли более элегантное решение
1 ответ
Решение
Это зависит от того, когда ваш код действительно выполняется. Я попробовал этот поршень, и это сработало.
app.js
var app = angular.module('plunker', []);
myModule.js
var myModule = angular.module('myModule', []);
myModule.service('MyService', function() {
return {test: 'MyService'};
});
app.requires.push('myModule');
app.controller('MainCtrl', ['$scope','MyService', function($scope, MyService) {
$scope.name = MyService.test;
}]);
index.html
<head>
<script src="app.js"></script>
<script src="myModule.js"></script>
</head>
Вам нужно добавить свои дополнительные модули после загрузки app.js, но в той же последовательности выполнения javascript. Тайм-ауты и асинхронная загрузка не удалось для меня.