是否可以在一个服务中拥有多个功能?
我的书服务中有这个:
(function() { 'use strict'; angular .module('app.core') .service('BookService',BookService); BookService.$inject = ['$resource']; /* @ngInject */ function BookService($resource) { return $resource('/api/book/:id',{ id: '@id' },{ 'get': { method: 'GET',cache: true },'query': { method: 'GET',isArray: true,cache: true },}); } })()
但是在同一个服务中,我希望有另一个功能,我将传递其他参数,例如:
return $resource('/api/book/:name',{ name: '@name' },});
我的控制器看起来像这样,有两个不同的调用:
BookService.get({ id: 2 },function(book) {}) BookService.get({ name: "bookTitle" },function(book) {})
是的你可以.只需定义服务中的功能即可.最后,返回一个对象,该对象包含要向服务的使用者公开的所有函数.编辑:这适用于工厂.有关服务,请参阅nathan的回答.
(function() { 'use strict'; angular .module('app.core') .factory('BookService',BookService); BookService.$inject = ['$resource']; /* @ngInject */ function BookService($resource) { var getById = function(id){ return $resource('/api/book/:id',{ id: id },{ 'get': { method: 'GET',cache: true } }); }; var getByName = function(name) { return $resource('/api/book/:name',{ name: name },cache: true } }); }; return { getById: getById,getByName: getByName }; } })()