当我需要使用工厂或服务时,我试图找到真正的差异,但我总是在示例中找到相同的内容:
a) This is the way to create the "i18n" service...
b) This is the way to create the "i18n" factory...
就像把相同的代码放在不同的顺序来做同样的事情。所以我总是问自己:如果我能做同样的事情会有什么真正的不同?
另一个问题是在许多教程中,人们给每个术语赋予了不同的含义,所以现在我很困惑。
所以,我问:
谢谢!
答案 0 :(得分:1)
<强> 1。服务的含义是什么?
<强> 2。工厂的含义是什么?
服务和工厂的含义相同,即它们是javascript函数,负责执行特定任务。 Angular Service服务和Angular Factory服务是我们创建Angular服务的方式,根据应用程序的需要,我们可以使用它们中的任何一个。
第3。服务和工厂的不同之处是什么?
在Service服务中,该函数就像一个构造函数,你不需要初始化并返回变量,服务会自动为你做。
myApp.service("LoginService", function () {
this.login = function (username, password) {
this.isLogged = true;
}
})
在控制器中,您可以使用以下代码访问该服务 -
LoginService.login($scope.form.Username, $scope.form.Password);
$scope.loggedMessage = LoginService.isLogged;
然而,在工厂中,您必须显式初始化对象并按以下方式返回
myApp.factory("LoginFactory", function () {
var obj = {};
obj.login = function(username,password){
obj.isLogged = true;
return obj;
}
return obj;
})
在控制器中,您可以使用以下代码访问工厂 -
var obj = LoginFactory.login($scope.form.Username, $scope.form.Password);
$scope.loggedMessage = obj.isLogged;
<强> 4。我何时需要使用服务?
它应该用于简单的逻辑。它用于注册将用作对象构造函数的函数。例如 - 使用服务来保存用户在对象中的登录详细信息。
<强> 5。当我需要使用工厂时?
Factory返回一个对象的实例,使用该对象可以访问工厂函数。例如,您有一个带有Add,Subtract,Multiply函数的MathFactory。