2014-09-15 11 views
5

मैं AngularJS के साथ एक शुरुआत कर रहा हूँ, और इस कोड में मेरी त्रुटि नहीं मिल सकता हैAngularJS संसाधन यूआरएल

var myCarResource = $resource('cars/:carId', 
     { 
      carId:'@id' 
     }); 
    var car = myCarResource.get({id:'abc'}); 

अपेक्षित यूआरएल: .../cars/abc

बुलाया यूआरएल है: .../cars?id=abc

मैं angularjs v1.2.24

का उपयोग कर रहा हूं क्या कोई मेरी मदद कर सकता है? धन्यवाद

+2

हो सकता है इस @Yalamber टिप्पणी/ऊपर के लिंक से मदद कर सकते हैं http://stackoverflow.com/questions/16677487/angularjs-resource-builds-wrong-resource-url – Yalamber

उत्तर

5

रूप $resourceparamDefaults दस्तावेज में कहा गया है:

को देखते हुए एक टेम्पलेट/path /: क्रिया और पैरामीटर {क्रिया: 'नमस्कार', अभिवादन: 'हैलो'} URL में परिणाम/पथ/नमस्कार? अभिवादन = नमस्कार।

पैरामीटर मान कि पैरामीटर डेटा वस्तु पर इसी संपत्ति से निकाला हो जाएगा के लिए तो मान के साथ @ पहले से जुड़ा हुआ है, तो (जब एक कार्रवाई विधि बुला प्रदान की गई)। तो someParam का मूल्य data.someProp

यह है कि किसी भी क्रिया parameterizd यूआरएल में परिभाषित किया गया है कि कुंजी में परिभाषित से मेल खाता है पता चलता हो जाएगा: उदाहरण के लिए, यदि defaultParam वस्तु { '@someProp' someParam} है $resource का पैरामीटर डिफ़ॉल्ट या $resource क्लास विधियां (प्राप्त करें, सहेजें, आदि ..) पैरामीटर में उस कुंजी का संबंधित मान यूआरएल में क्रिया को प्रतिस्थापित करेगा। दूसरी ओर '@' अंकन, इस संदर्भ में ठीक से नहीं समझाया गया था, यह किया जाना चाहिए था: पैरामीटर मान कि पैरामीटर के लिए तो मान के साथ @ पहले से जुड़ा हुआ है

तो इसी से निकाला जाएगा डेटा ऑब्जेक्ट पर संपत्ति (उदाहरण क्रिया विधि को कॉल करते समय प्रदान की जाती है)।

उदाहरण कार्रवाई तरीकों ($, मिल $ बचाने के लिए, $ हटाने के लिए, आदि ..), तरीकों कि डेटा के लिए उपयोग किया जाता है वस्तुओं$resource वर्ग कार्रवाई तरीकों का उपयोग कर लिया गया। समान संसाधनों के साथ अनुरोधों को चेन करते समय ये आमतौर पर सहायक होते हैं।

{ 
    "id": "abc" 
} 

प्रत्येक कार्य विधि मंगलाचरण की प्रतिक्रियाएं टिप्पणियां पढ़ें:

EXAMPLE DEMO

मान लेते हैं कि अपने cars/abc रिटर्न की प्रतिक्रिया json करते हैं।

var myCarResource = $resource('cars/:carId', 
{ 
    carId:'@id' 
}); 


// This sends a GET request '/cars/?id=abc 
myCarResource.get({id:'abc'}); 

// This sends a GET request '/cars/abc' 
myCarResource.get({carId:'abc'}); // returns {"id": "abc"} 

myCarResource.get({carId:'abc'}).$promise.then(function(car) { 

    // sends a POST request '/cars/abc', it replaces the :carId verb from the 
    // @id notation you have defined in the parameter default. It also sends, 
    // other parameter defaults defined with '@' that are defined as verbs in the url. 
    car.$save(); 

}); 
+0

, एक और विकल्प निम्न करने के लिए है : 'myCarResource।प्राप्त करें ({}, {id: 'abc'}); 'मेरी सीमित समझ से, मेरा मानना ​​है कि पहली वस्तु सीधे यूआरएल पैटर्न से संबंधित है, और इस प्रकार यूआरएल में पैरामीटर के नाम से मेल खाना चाहिए (इसमें मामला, कारआईडी)। दूसरी ऑब्जेक्ट वह है जिसका उपयोग तब किया जाता है जब आप '@id' का उपयोग करते हैं और दूसरी ऑब्जेक्ट की आईडी खींच लेते हैं और इसे मेल करते हैं: carId –

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