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

前端之家收集整理的这篇文章主要介绍了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
            };

        }
})()

猜你在找的Angularjs相关文章