2015-02-26 1 views
0

Je le code suivant:

angular.module('myApp').factory 'Product', ($resource) -> 

    Product = $resource '/api/v1/products/:id', {}, 
    all: { method: 'GET', isArray: true } 
    edit: { method: 'GET', url: '/api/v1/products/:id/edit' } 

    Product.prototype.images = -> 
    this.$promise.then (data) -> 
     image = $resource "/api/v1/products/#{data.id}/images" 
     image.query().$promise.then (data) -> data 

    return Product 

La méthode images définie sur les travaux prototypes, mais je me demande si cela est possible de le faire en utilisant le DSL méthode personnalisée que je l'habitude de définir all et edit?

Comment puis-je faire cela?

Répondre

0

Oui, vous pouvez définir une méthode pour obtenir les images d'un produit particulier. L'une des méthodes consiste à remplacer la configuration de ressource par l'ID de l'instance de ressource et à ajouter une variable contrôleur à l'itinéraire de ressources.

$resource '/api/v1/products/:id/:controller', { id: '@id' }, 
    all: 
    method: 'GET' 
    isArray: true 
    edit: 
    method: 'GET' 
    params: controller: 'edit' 
    getImages: 
    method: 'GET' 
    isArray: true 
    params: controller: 'images' 

Maintenant, vous pouvez appeler la méthode de la ressource directement: Product.getImages({id: 'aProductId'}) ou de l'instance: product.$getImages()

+0

Ce n'est pas vraiment la même chose. Ma mise en œuvre me permet d'appeler une méthode d'instance. Par exemple, product = Product.all (id: 1); images = product.images(). Cela peut-il être fait? – Nathan

+0

Oui, cela peut être fait, j'ai édité la réponse en conséquence. espérons que cela a aidé – teleaziz

+0

Cela ne fonctionne pas. J'obtiens 'api/v1/products/images 404' - l'id de produit n'est pas passé dans viw '@id' de l'instance. – Nathan