2011-06-28 16 views
9

Bazı varsayılanları tanımlayan bir sınıfa ve bazı varsayılanları tanımlayan bir alt sınıfa sahibim. Fakat alt sınıfın bir örneğini oluşturduğumda sadece yerel varsayılanlara bakar ve varsayılanlarını ebeveyninkilerle birleştirmez. Yerel alt varsayılanları, her alt sınıfın initialize işlevinde ana varsayılanlarla açıkça birleştirmeden bunu yapmak için herhangi bir basit yol var mı?Backbone.js'de alt sınıflar için varsayılan değerler olarak davranabilmek için Model süper sınıfı varsayılanlarını nasıl alabilirim?

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); 

Bu çıkışlar:

{rabbit: 25} 

Ben istediğini değil:

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

cevap

7

Sen böyle yapamaz. Bunu, model tanımınızdan sonra kullanmanız gerekecektir.

+1

Aynı görünüm olayları özniteliklerine uygulanır. – Julien

+1

Bu cevabın Envanter'i nasıl değiştirdiğiyle ilgili bir tartışma için lütfen [this] (http://stackoverflow.com/questions/6549149/extending-the-defaults-of-a-model-superclass-in-backbone-js) adresine bakınız. prototype.defaults yanı sıra ExtendedInventory.prototype.defaults aynı nesne referansı oldukları için. – c3rin

+0

Haklısınız. – Julien

İlgili konular