2011-06-28 6 views
9

मेरे पास एक वर्ग है जो कुछ डिफ़ॉल्ट को परिभाषित करता है, और एक सबक्लास जो कुछ डिफ़ॉल्ट को परिभाषित करता है। लेकिन जब मैं उप-वर्ग का उदाहरण बनाता हूं तो यह केवल स्थानीय डिफ़ॉल्ट को देखता है और माता-पिता के साथ अपने डिफ़ॉल्ट को विलय नहीं करता है। क्या प्रत्येक सबक्लास के initialize फ़ंक्शन में पैरेंट डिफ़ॉल्ट के साथ स्थानीय डिफ़ॉल्ट रूप से विलय किए बिना ऐसा करने का कोई आसान तरीका है?Backbone.js में मैं उपclasses के लिए डिफ़ॉल्ट के रूप में कार्य करने के लिए मॉडल superclass डिफ़ॉल्ट कैसे प्राप्त कर सकते हैं?

var Inventory = Backbone.Model.extend({ 
    defaults: { 
     cat: 3, 
     dog: 5 
    } 
}); 

var ExtendedInventory = Inventory.extend({ 
    defaults: { 
     rabbit: 25 
    } 
}); 

var ei = new ExtendedInventory({}); 
console.log(ei.attributes); 

यह आउटपुट:

{rabbit: 25} 

नहीं हैं कि क्या मैं चाहता हूँ:

{cat: 3, dog: 5, rabbit: 25} 

उत्तर

7

आप ऐसा नहीं कर सकते। आपको सबक्लास

_.extend(ExtendedInventory.prototype.defaults, {rabbit: 25}); 

अपनी मॉडल परिभाषा के बाद इसे रखना होगा।

+1

वही दृश्य घटनाओं पर लागू होता है। – Julien

+1

कृपया यह जवाब देखें [http://stackoverflow.com/questions/6549149/extending-the-defaults-of-a-model-superclass-in-backbone-js) इस उत्तर में परिवर्तन कैसे बदलता है इस बारे में चर्चा के लिए प्रश्न। prototype.defaults के साथ-साथ ExtendedInventory.prototype.defaults क्योंकि वे एक ही ऑब्जेक्ट संदर्भ हैं। – c3rin

+0

आप सही पकड़ रहे हैं। – Julien

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

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