angularjs $resource 是否应该包装在工厂中?为什么不服务?
Should an angularjs $resource be wrapped in a factory? Why not service?
为什么 $resource
应该被 .factory
使用?为什么 .service
是错误的方法?
例如
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
为什么错了?
app.service('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
两者都是单例,但是services
是使用new
关键字实例化的。
如果您要使用 service
,您将无法访问 $resource
的静态 class 方法,这取决于您的应用程序可能更好。
换句话说,您将无法使用:
Notes.query({ ... });
Notes.create({ ... });
和其他 class 函数变体。只有实例方法如:
note.$get()
note.$save()
note.$update()
为什么 $resource
应该被 .factory
使用?为什么 .service
是错误的方法?
例如
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
为什么错了?
app.service('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
两者都是单例,但是services
是使用new
关键字实例化的。
如果您要使用 service
,您将无法访问 $resource
的静态 class 方法,这取决于您的应用程序可能更好。
换句话说,您将无法使用:
Notes.query({ ... });
Notes.create({ ... });
和其他 class 函数变体。只有实例方法如:
note.$get()
note.$save()
note.$update()