Скажем, у меня есть завод по имени MyFactory
, и я ввожу его в несколько контроллеров. Как я могу получить доступ к области контроллеров внутри фабрики?
Единственный способ, которым я в настоящее время думать о том, как сделать это следующим образом:
app.factory('MyFactory', function() {
return function($scope) {
myPublicFunc: function() {
$scope.$on('$destroy', function() { ... });
}
}
});
app.controller('MyController1', ['$scope', MyFactory', function($scope, Myfactory) {
var factory = new MyFactory($scope);
factory.myPublicFunc();
});
Но есть ли другой способ, где я могу просто вернуться { }
вместо function($scope) { }
в MyFactory
и использовать завод непосредственно (MyFactory.myPublicFunc
) вместо того, чтобы создать новый экземпляр с ключевым словом new
и по-прежнему получить доступ к областям $ 1 каждого контроллера?
услуги предназначены для совместного использования между областями и не должны иметь зависимости от области управления. Я не думаю, что есть способ сделать это –
@KhanhTO Пример, который я написал в вопросе, работает, по крайней мере, так. –
Я никогда не говорил об инъекции зависимостей. Я просто хотел получить доступ к области внутри фабрики. Я все еще думаю, что могу тестировать устройство, мне просто нужно издеваться над функциями внутри фабрики, мне не нужна область внутри тестов. Причина * только * Мне нужна область внутри фабрики, чтобы обрабатывать событие destroy, поэтому мне не нужно копировать код во всех контроллерах, которые используют эту конкретную фабрику. –