2013-03-01 7 views
13

मेरे पास एकाधिक यूआरएल पथ हैं जिन्हें मैं एक संसाधन में मैप करना चाहता हूं। हालांकि मुझे यकीन है कि बुलाए गए फ़ंक्शन के आधार पर URL को कैसे बदला जाए। उदाहरण के लिए: क्वेरी के लिए गंतव्य मानचित्रण होगा/allProducts, तथापि नष्ट की तर्ज पर कुछ/हटाने/होगा: आईडीएकल सेवा के लिए एकाधिक रूटिंग यूआरएल 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: {...} तर्क है।

अपने उदाहरण में:

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

मैं सिर्फ परम के रूप में यूआरएल डाल करने के लिए की जरूरत है।

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

कैसे आप इनमें से प्रत्येक फोन किया था? मान लीजिए कि आप सिर्फ सहेजना चाहते थे, क्या आपने ProductsRest.save() किया था; ? – user20358

+1

अच्छा समाधान लेकिन कुछ मामलों के लिए, यह अधिक स्पष्ट और पठनीय, mikemueller समाधान पसंद करेंगे। –

संबंधित मुद्दे