Javascript 如何在角度工厂中初始化变量?
我想知道当工厂初始化时,是否可以使用angular工厂的构造函数来运行一些代码。例如,我有一个factory服务,每当应用程序启动或调用/初始化此factory时,我都希望从该服务打印到控制台。有人能解释一下吗 角度工厂: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
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,或者在构造函数中分配给它。