2013-03-01 14 views
13

Ho più percorsi URL che desidero mappare a una singola risorsa. Tuttavia non sono sicuro di come cambiare l'URL in base alla funzione chiamata. Ad esempio, il: mappatura dest per la query sarebbe/allproducts, tuttavia distruggere sarebbe qualcosa sulla falsariga di/delete /: idPiù URL di routing per singolo servizio 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' } 
    }); 
}]); 

risposta

24

Per ogni azione è possibile sovrascrivere l'argomento url. In particolare per questo è l'argomento url: {...}.

Nel tuo esempio:

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

Avevo solo bisogno di mettere l'url come il parametro.

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

come hai chiamato ciascuno di questi? supponiamo che tu voglia solo chiamare il salvataggio, hai fatto ProductsRest.save(); ? – user20358

+1

soluzione piacevole ma preferirei la soluzione mikemueller, per alcuni casi, è più chiara e leggibile. –

Problemi correlati