2011-06-08 8 views
20

Model silmek için bu iki adım zorunlu mudur?Bir Koleksiyonda Bir Omurga Modelini Tek Adımda İmha Etmek?

var model = collection.get(id); 
model.destroy(); 
collection.remove(model); 

Koleksiyondan kaldırıldığında modeli yok etmenin bir yolu yok mu? bir koleksiyondan bir model çıkarma

+12

ben size modeline '.destroy()' çağırdığınızda en az 0.5.3 yılında AFAIK bu soruyu sorduğumda kullanarak, ancak edildi Omurga hangi sürümünü emin değilim, Backbone kaldırır sunucudan ve (bu özellik sağlandığında) otomatik olarak koleksiyonundan çıkarır. –

+0

Güzel. Gelecek okuyucular için Not 0.3.3 –

+0

Not kullanıyordum: omurga sadece model.collection değil, tüm koleksiyonlardan kaldırır. Koleksiyonlar, model olaylarını dinler ve 'yok etme' bir kaldırmaya neden olur (karşılık gelen olaylarla). – Crisfole

cevap

36
Model.bind("remove", function() { 
    this.destroy(); 
}); 
... 
var model = new Model(); 
... 
collection.remove(model); 

"remove" olayı tetikler.

Eğer istersen, modellere bağlanarak kendilerini yok edebilirsin.

+1

Bunun için teşekkürler, ancak oldukça mantıksız IMO. Koleksiyonda arama yapıldığında bir modelin yok edilmesini istemediğinizin bir sebebi var mı (en azından varsayılan davranışın olmaması için bir sebep). Bu, github üzerinde bir özellik talebi olarak yükselmeye değer mi? – calumbrodie

+13

@kissmyface Koleksiyonları, modellerin üzerinde (veritabanı terimlerinde olduğu gibi) arbitertir. Eğer ben karar verirseniz, Model X'i (koleksiyon) Y'de görmemelisiniz. Neden X modeli imha edilir? – Raynos

+1

Bu güzel bir benzeşim. Oldukça böylesine ayrışmış olduklarını fark etmemiştim (bütün kodlarım şimdiye kadar koleksiyonlar ve modeller arasında oldukça katı bağlara sahipti). Açıklama için teşekkürler. – calumbrodie