2011-07-19 17 views
7

Backbone.Model veya Backbone.Collection nesnelerini yerel depolamaya kaydetmemde sorun yaşıyorum. Sorun şu ki, kaydedildiği zaman, sadece öznitelikler kaydedilir ve bunu istemiyorum. Aslında onların örnek TODO demosunda sunulan omurga-localstorage kullanıyorum.Omurga modelini ve koleksiyonunu JSON dizisine kaydetme

Bu JSON.stringify (this.data) döner, ben setleri alır tek modelleri veya koleksiyonun özelliklerini bakın ne baktığınızda onların fonksiyonunu

save: function() {   
    localStorage.setItem(this.name, JSON.stringify(this.data)); 
} 

tasarruf olduğunu. Bütün durumu kaydetmek istediğimi belirtmenin bir yolu var mı, koleksiyon sadece nitelik değil, içeride mi?

cevap

12

Serileştirilmesini istediğiniz verileri döndürmek için Model.toJSON veya Collection.toJSON öğesini geçersiz kılın.

toJSON : function() { 
    return _.clone(this.attributes); 
} 

Koleksiyonu'nun toJSON Model'in toJSON kullanır:

varsayılan Model.toJSON sadece özelliklerini döndürür Aslında JSON.stringify çağırıyorum

toJSON : function() { 
    return this.map(function(model){ return model.toJSON(); }); 
} 
+0

Ama model.toJSON() Yani tüm model seti sadece öznitelik değil, telkinlenmeli mi? JSON.stringify sürece model.toJSON() çağırır? – dchhetri

+2

JSON.stringify işte bu şekilde çalışır. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify "Dizilenmiş bir nesnenin değeri bir işlev olan JSON adlı bir özelliğe sahipse, toJSON yöntemi JSON tasnifleme davranışını özelleştirir: serialize edilen nesne, çağrıldığında toJSON yöntemiyle döndürülen değer serileştirilecektir. " –

+0

Oh Görüyorum. Bir deneyeyim. – dchhetri

İlgili konular