2015-02-26 4 views
0

У меня есть следующий код:

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 

В images метод, определенный прототип работает, но мне интересно, если это возможно сделать с помощью метода пользовательского DSL, который я использовал для определенной all и edit?

Как я могу это сделать?

ответ

0

Да, вы можете определить способ получения изображений определенного продукта, один из способов сделать это - изменить конфигурацию ресурсов по умолчанию на идентификатор ресурса «экземпляр» и добавить переменную контроллера в маршрут ресурса.

$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' 

Теперь вы можете вызвать метод из ресурса непосредственно: Product.getImages({id: 'aProductId'}) или из экземпляра: product.$getImages()

+0

Это не совсем то же самое. Моя реализация позволяет мне вызвать метод экземпляра. Например, product = Product.all (id: 1); images = product.images(). Это можно сделать? – Nathan

+0

Да, это можно сделать, я отредактировал ответ соответственно. надеюсь, что помог – teleaziz

+0

Не работает. Я получаю 'api/v1/products/images 404' - идентификатор продукта не передается в viw '@id' из экземпляра. – Nathan

Смежные вопросы