Javascript 如何在角度工厂中初始化变量?

Javascript 如何在角度工厂中初始化变量?,javascript,angularjs,constructor,angularjs-service,angularjs-factory,Javascript,Angularjs,Constructor,Angularjs Service,Angularjs Factory,我想知道当工厂初始化时,是否可以使用angular工厂的构造函数来运行一些代码。例如,我有一个factory服务,每当应用程序启动或调用/初始化此factory时,我都希望从该服务打印到控制台。有人能解释一下吗 角度工厂: app.factory('HomeFactory', function() { // create a object using constructor function var HomeFactor

我想知道当工厂初始化时,是否可以使用angular工厂的构造函数来运行一些代码。例如,我有一个factory服务,每当应用程序启动或调用/初始化此factory时,我都希望从该服务打印到控制台。有人能解释一下吗

角度工厂:

            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;
}
角度控制器:

            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;
}

))

您创建的工厂只是一个构造函数。您需要实例化实例来调用它:

$scope.home1 = new HomeFactory();
$scope.home2 = new HomeFactory();

也许你需要一个例子
$scope.home=new HomeFactory()
?此外,您的
contactSubmit
应该是
HomeFactory.prototype.contactSubmit
,使用
而不是未定义的
self
完成,将self更改为“this”参考。我看到很多开发人员将这些方法附加到对象的原型上,当这两种方法似乎都可以正常工作时,我相信这是推荐的原因。因为现在的区别是您定义了“静态”方法,您的实例没有这个函数可调用。要拥有
$scope.home.contactSubmit()
,您应该将此函数分配给prototype,或者在构造函数中分配给它。