2013-02-15 22 views
7

Omurga Modeli olaylarının omurga koleksiyonlarına yayılmasını nasıl önleyebilirim?Toplama olayı yayılımı için omurga modeli nasıl önlenir?

Düzenleme:

ı CollectionView MyModels bir koleksiyonu içeren aşağıdaki gibi bir şey var diyelim ...

var CollectionView = Backbone.Collection.Extend({ 
    initialize: function() { 
     this.collection.on("change", doStuff); 
    } 
}); 

var ModelView = Backbone.View.Extend({ 
    initialize: function() { 
     this.model = new MyModel(); 
     this.model.on("change", doStuff); 
     this.model.fetch(); 
    } 
}); 

bir özel durumda ben "değişim" olayı istemeseydi getirme tamamlandıktan sonra koleksiyona kadar çoğaltmak için, onu durdurmak için herhangi bir yolu olup olmadığını merak ediyorum.

Teşekkür

+1

Modeller sıfırlama olayını tetiklemiyor, sorunuzu genişletebilir misiniz? Spesifik olarak hangi kodu yaymak istemiyorsunuz? – Tomdarkness

+0

To @ Tomdarkness'ın noktası, gösterdiğiniz kod olay bağlamadır. Olayı gerçekten tetikleyen nedir? (Bence bu iyi bir soru, çünkü cevap AFAIK dokümanlarında açık değil.) – Mathletics

+0

Modellerin sıfırlama olayını tetiklemediğinin farkında değildim - bilmek güzel. – user1031947

cevap

8

bir değişiklik olay ateş bir model önlemek için: Bu da ateşleme gelen modelin değişim olayını önlemek çünkü

model.set(attrs, {silent: true}); 

Bu, sen de, ne istediğini olmayabilir. bu bir var,

var CollectionView = Backbone.View.extend({ 
    this.initialize = function() { 
    this.collection.on('change', doStuff, this); 
    }, 
    this.doStuff = function(model, collection, options) { 
    if (options.dontBubble) { 
     return; 
    } 
    // Do some stuff. 
    } 
}); 

Verilen:

Koleksiyonları tüm model olaylar geçmesine, ama ne yapabilirim ayrıca geçirilir alacak ekstra seçenekler geçmesi geçerli:

model.set(attrs, {dontBubble: true}); 

Ve CollectionView içinde biraz çirkin, ama bununla ilgili bir yolu var.

İlgili konular