2012-10-01 17 views
7

मुझे पता चला कि अगर मैं एक एम्बर-डेटा मॉडल की मूल परिभाषा में यूआरएल को शामिल करने का प्रयास करता हूं तो यह मेरे आरईएसटी एडाप्टर में उड़ाता है, लेकिन अगर मैं बस "फिर से खोलना चाहता हूं" तो यह ठीक है।एम्बर-डेटा मॉडल के लिए यूआरएल सेट करने के लिए मुझे "reopenClass" की आवश्यकता क्यों है?

इसके पीछे तकनीकी कारण क्या है? जबकि reopenClass सेट वर्ग गुण,

CodeCamp.Speaker = DS.Model.extend({ 
    id: DS.attr('number'), 
    name: DS.attr('string'), 
    session: DS.belongsTo('CodeCamp.Session') 
}); 

CodeCamp.Speaker.reopenClass({ 
    url: 'sessions/%@/speakers' 
}); 

उत्तर

15

एक वस्तु पर extend कॉलिंग उदाहरण सेट विशेषताओं (नीचे काम कर रहे उदाहरण है)। भी

speaker = CodeCamp.Speaker.createObject() 
Ember.get(speaker, 'name') 
+0

भयानक लगता है! ठीक वही जो मेरे द्वारा खोजा जा रहा था! –

+0

लेकिन 'DS.Model' एक वर्ग नहीं है और कोई ऑब्जेक्ट नहीं है? फिर आप क्यों कहते हैं कि हम किसी ऑब्जेक्ट पर विस्तार कर रहे हैं? मैं थोड़ा असमंजस में हूँ। – Aras

0

ध्यान दें कि आप बस reopen का उपयोग करके एक उदाहरण का विस्तार कर सकते हैं:

url विशेषता के रूप में करने का विरोध किया एक वर्ग स्तरीय विशेषता,

Ember.get(CodeCamp.Speaker, 'url') 

है। Emberjs 'docu में एक उदाहरण है जो आपको http://emberjs.com/guides/object-model/reopening-classes-and-instances/

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

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