我在项目中使用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)中,似乎更受欢迎的是使用factory作为更好的方法。你能给我解释一下吗
最佳答案
.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();
});