如何使用angular $ resource定义自定义方法?

时间:2015-02-26 23:50:59

标签: angularjs angular-resource

我有以下代码:

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方法有效,但我想知道是否可以使用我用来定义alledit的自定义方法DSL?

我该怎么做?

1 个答案:

答案 0 :(得分:0)

是的,您可以定义获取特定产品图像的方法,一种方法是将资源配置更改为默认为资源的ID"实例"并将控制器变量添加到资源路由。

$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()