2013-03-01 40 views
13

我有多个我想要映射到单个资源的URL路径。不过,我不确定如何根据所调用的函数更改URL。例如:查询DEST映射会/ allProducts,但破坏是沿东西线/删除/:ID单个服务的多个路由URL AngularJS

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/:dest', {}, { 
     query: {method: 'GET', params: {}, isArray: true }, 
     save: {method: 'POST'}, 
     show: { method: 'GET'}, 
     edit: { method: 'GET'}, 
     update: { method: 'PUT'}, 
     destroy: { method: 'DELETE' } 
    }); 
}]); 

回答

24

对于每个操作,您可以覆盖url参数。 特别为此是url: {...}的说法。

在您的例子:

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/', {}, { 
     query: {method: 'GET', params: {}, isArray: true }, 
     save: {method: 'POST', url: 'service/products/modifyProduct'}, 
     update: { method: 'PUT', url: 'service/products/modifyProduct'} 
    }); 
}]); 
17

我只是需要把URL作为帕拉姆。

service.factory('ProductsRest', ['$resource', function ($resource) { 
    return $resource('service/products/:dest', {}, { 
     query: {method: 'GET', params: {dest:"allProducts"}, isArray: true }, 
     save: {method: 'POST', params: {dest:"modifyProduct"}}, 
     update: { method: 'POST', params: {dest:"modifyProduct"}}, 
    }); 
}]); 
+0

你是怎么调用每个这些?假设你只是想调用save,你做了ProductsRest.save(); ? – user20358 2014-06-27 13:42:27

+1

不错的解决方案,但宁愿mikemueller解决方案,在某些情况下,它更清晰和可读。 – 2016-02-03 14:42:32