Angularjs 如何使用angular$resource定义自定义方法?
我有以下代码:Angularjs 如何使用angular$resource定义自定义方法?,angularjs,angular-resource,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.
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
方法有效,但我想知道是否可以使用我用来定义all
和edit
的自定义方法DSL来实现这一点
如何才能做到这一点?是的,您可以定义一种方法来获取特定产品的图像,一种方法是将资源配置更改为默认为资源“实例”的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()
这实际上不是一回事。我的实现允许我调用实例方法。例如,product=product.all(id:1);images=product.images()。这可以做到吗?是的,可以做到,我相应地编辑了答案。希望helpedIt不起作用。我得到api/v1/products/images 404
——产品id没有从实例传递到viw'@id'。