код, взятый отсюда http://plnkr.co/edit/jcOwg8HgBGPtod4yCR5j?p=info
я читаю приведенный ниже код, но все-таки у меня путают, что как notifytwo экземпляр получает пропуск на завод уведомления?
factory notify имеет функцию, называемую sampleFun, которая вызывает функцию sampleFunTwo другой фабрики с именем notifytwo, но я не нашел, когда и как notifytwo экземпляр получает пропуск на уведомление о фабрике?
пожалуйста, помогите мне понять поток кода. благодаря
var myModule= angular.module('MyServiceModuleOne', ['MyServiceModuleTwo']);
myModule.controller('TestController', ['$scope', 'notify', function($scope, notify){
$scope.getFn = function() {
notify.sampleFun();
}
}]);
myModule.factory('notify',
function(notifytwo) {
return {
sampleFun: function() {
notifytwo.sampleFunTwo();
},
};
}
);
var myModuleTwo= angular.module('MyServiceModuleTwo',[]);
myModule.factory('notifytwo',
function() {
return {
sampleFunTwo: function() {
alert('From notify two');
}
};
}
);
Завод уведомлений может вызвать фабрику notifyTwo, потому что notifyTwo вводится при создании экземпляра уведомления:
myModule.factory('notify',
function(notifytwo) //RIGHT HERE IS WHERE IT'S INJECTED
getFn()
был создан в функции контроллера getFn()
поэтому MyServiceModuleTwo
был введен в модуль и достаточно вызвать его?
MyServiceModuleOne
$injector
MyServiceModuleOne
когда MyServiceModuleOne
был загружен. Модуль зависит от MyServiceModuleTwo
, поэтому он запускается первым. Затем TestController
регистрируется, что, в свою очередь, зависит от заводского notify
. Таким образом, создается notify
(или извлекается экземпляр notify
, если он уже был создан где-то еще) еще до того, как контроллер может быть зарегистрирован. Наконец, экземпляр- notify
передается в контроллер и, таким образом, может использоваться во время выполнения.