我在项目中使用 anularJS,我需要一个服务来使用 $http.get 方法获取 JSON,我认为该服务的语法更易于阅读:
app.service('ApiService' , function($http)
{
var self = this;
self.user = {};
self.user.getByName = function(){};
self.user.getByRate = function(){};
self.events = {};
self.events.getList = function(){};
self.events.getByDate = function(){};
return ({
user : self.user,
events : self.events
});
});
然后你可以这样调用它:
$scope.reople = ApiService.use.getList('some url');
但从太多页面(如 this 和 this 和 this )我已经看到,使用工厂作为更好的方法似乎更受欢迎。你能解释一下吗:
- 为什么工厂比服务更受青睐和欢迎?
- 对于团队工作还是对于处理现有代码的开发人员而言,哪个更具可扩展性和可维护性?
最佳答案
.service()
只是 .factory()
的派生版本,两者都派生自 .provider()
,所有其中的一部分用于注册服务以通过应用程序中的 DI 使用。
请参阅AngularJS: Service vs provider vs factory如果您想深入了解细节。
.factory()
之所以受欢迎,大概是因为:
.service()
过于具体,只能传入一个构造函数.provider()
过于冗长,并非所有时间服务都应该是可配置的
.factory()
位于中间,可满足几乎常见用法的需求。
app.factory('ApiService' , function($http) {
function ApiService() {
var self = this;
self.user = {};
self.user.getByName = function(){};
self.user.getByRate = function(){};
self.events = {};
self.events.getList = function(){};
self.events.getByDate = function(){};
};
return new ApiService();
});
关于angularjs - 为什么工厂在使用 $http.get 时优先提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776604/