AngularJS внедряет один модуль в другой модуль и вызывает функцию

0

код, взятый отсюда 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');
                  }    
          };
        }
    );
  • 0
    Это называется «внедрение зависимости». Angular определяет, какая зависимость была названа notifytwo, и вводит эту фабрику.
Теги:

1 ответ

0
Лучший ответ

Завод уведомлений может вызвать фабрику notifyTwo, потому что notifyTwo вводится при создании экземпляра уведомления:

myModule.factory('notify', 
    function(notifytwo) //RIGHT HERE IS WHERE IT'S INJECTED
  • 0
    Экземпляр getFn() был создан в функции контроллера getFn() поэтому MyServiceModuleTwo был введен в модуль и достаточно вызвать его?
  • 1
    Это не тот порядок, в котором это происходит на самом деле: зависимости были зарегистрированы в сервисе MyServiceModuleOne $injector MyServiceModuleOne когда MyServiceModuleOne был загружен. Модуль зависит от MyServiceModuleTwo , поэтому он запускается первым. Затем TestController регистрируется, что, в свою очередь, зависит от заводского notify . Таким образом, создается notify (или извлекается экземпляр notify , если он уже был создан где-то еще) еще до того, как контроллер может быть зарегистрирован. Наконец, экземпляр- notify передается в контроллер и, таким образом, может использоваться во время выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню