Bunun yapılabileceğinin farkındayım ve pek çok yere baktım (dahil: Tüm bir koleksiyonu kurtarmak için en iyi uygulama? ). Ama hala kodla "tam olarak nasıl" yazıldığından emin değilim? (gönderi bunu İngilizce olarak açıklıyor. Javascript'e özgü bir açıklamanın olması harika olurdu :)
Bir model koleksiyonum olduğunu varsayalım - modellerin kendileri iç içe geçmiş koleksiyonlara sahip olabilir. Ana koleksiyonun toJSON () yöntemini geçersiz kıldım ve geçerli bir JSON nesnesi alıyorum. Tüm koleksiyonu (karşılık gelen JSON) "kaydetmek" istiyorum, ancak omurga bu işlevsellikle yerleşik olarak gelmiyor.
var MyCollection = Backbone.Collection.extend({
model:MyModel,
//something to save?
save: function() {
//what to write here?
}
});
Söylemen gereken bir yer biliyorum:
Backbone.sync = function(method, model, options){
/*
* What goes in here?? If at all anything needs to be done?
* Where to declare this in the program? And how is it called?
*/
}
İşlemle birlikte 'görünüm' tamamlandıktan sonra, koleksiyona kendisini sunucuya "kaydetmesini" söylemekten sorumludur (toplu güncelleme / oluşturma isteğini yerine getirebilir).
Ortaya çıkan sorular:
- "Hepsini birbirine bağlamak" için kodda nasıl / ne yazılır?
- Geri aramaların 'doğru' konumu nedir ve bir "başarı / hata" geri araması nasıl belirtilir? Sözdizimsel olarak mı? Omurgaya geri aramaları kaydetmenin sözdiziminden emin değilim ...
Eğer gerçekten zor bir işse, jQuery.ajax'ı bir görünüm içinde çağırabilir ve başarı / hata geri aramalarını this.successMethod
veya this.errorMethod
olarak iletebilir miyiz ? Çalışacak mı?
Omurganın düşünme biçimiyle uyumlu olmalıyım - tüm koleksiyonların senkronizasyonunda kesinlikle bir şeyleri kaçırdığımı biliyorum.