2016-04-15 8 views
3

Ich habe diesen Service:

(function() { 
    'use strict'; 
    angular 
     .module('myApp') 
     .factory('Consultant', Consultant); 

    Consultant.$inject = ['$resource', 'DateUtils']; 

    function Consultant ($resource, DateUtils) { 
     var resourceUrl = 'api/consultants/:id'; 

     return $resource(resourceUrl, {}, { 
      'query': { method: 'GET', isArray: true}, 
      'get': { 
       method: 'GET', 
       transformResponse: function (data) { 
        data = angular.fromJson(data); 
        return data; 
       } 
      }, 
      'update': { 
       method: 'PUT', 
       transformRequest: function (data) { 
        return angular.toJson(data); 
       }, 
       transformResponse: function (data) { 
        data = angular.fromJson(data); 
        return data; 
       } 
      }, 
      'save': { 
       method: 'POST', 
       transformRequest: function (data) { 
        return angular.toJson(data); 
       }, 
       transformResponse: function (data) { 
        data = angular.fromJson(data); 
        return data; 
       } 
      } 
     }); 
    } 
})(); 

Was passiert, wenn ich die URL api/consultantscustom/:id (mit seiner Abfrage/get/update-Methoden) zu diesem Dienst hinzufügen?
Da es scheint, dass diese Datei nur eine Fabrik enthalten kann, gibt es eine Möglichkeit, dies zu tun oder muss ich eine andere Datei mit einer neuen Fabrik erstellen?

Antwort

2

Vielleicht bin ich Missverständnis völlig, was Sie fordern, aber Sie können so viele Fabriken in einer Datei, wie Sie möchten (oder als nützlich erscheint):

(function() { 
    'use strict'; 

    angular.module('myApp') 
     .factory('Consultant', Consultant) 
     .factory('Custom', Custom); 

    Consultant.$inject = ['$resource', 'DateUtils']; 
    Custom.$inject = ['$resource']; 

    function Consultant ($resource, DateUtils) { 
     var resourceUrl = 'api/consultants/:id'; 
     ... 
    } 

    function Custom ($resource) { 
     var resourceUrl = 'api/consultantscustom/:id'; 
     ... 
    } 

Oder, wenn Sie möchten, Verwenden Sie die gleiche Factory erneut für den Zugriff auf verschiedene URLs. Sie können Methoden zum Festlegen der URL hinzufügen und den Aufruf der generischen Ressource erneut verwenden.

function Consultant ($resource, DateUtils) { 

    function consultants() { 
    _call_resource('api/consultants/:id'); 
    } 
    function custom() { 
    _call_resource('api/consultantscustom/:id'); 
    } 

    function _call_resource (resourceUrl) { 
    return $resource(resourceUrl, {}, { 
     ... 
    } 
    } 

    this.consultants = consultants; 
    this.custom = custom; 
    return this; 
} 
Verwandte Themen