angularjs – Angular:在一个Service中有多个函数

是否可以在一个服务中拥有多个功能

我的书服务中有这个:

(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
            };

        }
})()

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...