最佳答案
请耐心听我说。我知道还有其他答案,比如: AngularJS:服务vs提供商vs工厂 < / p >
然而,我仍然不知道你什么时候会使用服务而不是工厂。
据我所知,factory通常用于创建可以被多个controller调用的“通用”函数:创建通用控制器函数
比起服务,Angular文档似乎更喜欢工厂。他们甚至在使用工厂时提到“服务”,这更令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services
那么什么时候使用服务呢?
是否有一些事情只有通过服务才能做到或更容易做到?
幕后有什么不同吗?性能/内存差异呢?
举个例子。除了声明的方法,它们看起来是一样的,我不明白为什么我要做一个而不是另一个。http://jsfiddle.net/uEpkE/
更新:从托马斯的回答似乎暗示,服务是更简单的逻辑和工厂更复杂的逻辑与私有方法,所以我更新了下面的小提琴代码,似乎两者都能够支持私有函数?
myApp.factory('fooFactory', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo; }
return {
setFoobar: function(foo){
addHi(foo);
},
getFoobar:function(){
return fooVar;
}
};
});
myApp.service('fooService', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo;}
this.setFoobar = function(foo){
addHi(foo);
}
this.getFoobar = function(){
return fooVar;
}
});
function MyCtrl($scope, fooService, fooFactory) {
fooFactory.setFoobar("fooFactory");
fooService.setFoobar("fooService");
//foobars = "Hi fooFactory, Hi fooService"
$scope.foobars = [
fooFactory.getFoobar(),
fooService.getFoobar()
];
}