Как инициализируются переменные в angular factory?

Я хочу знать, можно ли использовать функцию конструктора фабрики angular для запуска некоторого кода при инициализации фабрики. Например, у меня есть фабричная служба, из которой я хочу печатать на консоль при каждом запуске приложения или всякий раз, когда эта фабрика вызывается/инициализируется. Может кто-нибудь объяснить?

Фабрика Angular:

            app.factory('HomeFactory', function() {
            // create a object using constructor function
              var HomeFactory = function() {
                 console.log('in the constructor function');
              };
              HomeFactory.contactSubmit = function() {
                var self = this;
                console.log(self.model);
              }
              // returning the factory object
              return (HomeFactory);
              });

Угловой контроллер:

  app.controller('HomeController', function($scope, $state, HomeFactory) {
    $scope.HomeFactory = HomeFactory;
}

);


person Rk R Bairi    schedule 10.06.2016    source источник
comment
может быть вам нужен экземпляр? $scope.home = new HomeFactory()?   -  person vp_arth    schedule 10.06.2016
comment
также ваш contactSubmit должен быть HomeFactory.prototype.contactSubmit с this вместо неопределенного self   -  person vp_arth    schedule 10.06.2016
comment
Готово, изменил себя, чтобы использовать ссылку «эта». И я вижу, как многие разработчики прикрепляют методы к прототипу объекта, когда оба, кажется, работают нормально, я уверен, что есть причина, по которой это рекомендуется.   -  person Rk R Bairi    schedule 10.06.2016
comment
На данный момент разница в том, что вы определяете статический метод, ваши экземпляры не имеют этой функции для вызова. чтобы иметь $scope.home.contactSubmit(), вы должны назначить эту функцию прототипу или this внутри конструктора.   -  person vp_arth    schedule 11.06.2016


Ответы (1)


Создаваемая вами фабрика — это просто функция-конструктор. вам нужно создать экземпляры, чтобы вызвать его:

$scope.home1 = new HomeFactory();
$scope.home2 = new HomeFactory();
person vp_arth    schedule 10.06.2016