2012-01-05 15 views
5

Bu şekilde görünen bir Görünümüm var. Ben bu görüldü gelmezBackbone.js: Görünüm koleksiyonunu değiştirirken Görünümün otomatik olarak yenilenmesini nasıl zorlamalıyım?

pricingsView.collection = new ProductPricings(filtered); 

fiyatlandırma görünümün koleksiyonunu güncelledik başka

var products = new ProductPricings(); 
var pricingsView = new PricingSelectListView({ 
    el: $("#sel-product"), 
    collection: products 
}); 

Somewhere (başka görünümler özel yöntemi) Böyle görünümü örneği var

//base class 
    var SelectListView = Backbone.View.extend({ 
     initialize: function() { 
      _.bindAll(this, 'addOne', 'addAll'); 
      this.collection.bind('reset', this.addAll); 
     }, 
     addAll: function() { 
      this.collection.each(this.addOne); 
     }, 
     events: { 
      "change": "changedSelected" 
     }, 
     changedSelected: function() { 
      this.selected = $(this.el); 
      this.setSelectedId($(this.el).val()); 
     } 

    }); 

    //my extended view 
    var PricingSelectListView = SelectListView.extend({ 
     addOne: function(item) { 
      $(this.el).append(new PricingView({ model: item }).render().el); 
     }   
    }); 

... hiçbir şey yapmamak.

pricingsView.render(); 

Artık koleksiyonda daha az öğe var, ancak yeni görünüm hiçbir zaman DOM'de oluşturulmuyor veya yenilenmiyor.

Nasıl Yaparım 1.) DOM'daki görüntüyü yenileyin? 2.) DOM'yi otomatik olarak yenilemeyi mi? Koleksiyonun ne zaman değiştiğini söylemek zorunda mıyım?

cevap

4

addOne()'u reset etkinliğine bağlıyorsunuz. Yalnızca pricingsView.collection örneğini değiştirdiğinizde, bu olay tetiklenmez ve addOne() yürütülmez.

yerine deneyin:

pricingsView.collection.reset(filtered); 
3

Zaten koleksiyonun sıfırlama olayına bağlamak beri bu işe yarayabilecek:

pricingsView.collection.reset(filtered); 

http://backbonejs.org/#Collection-reset

Hala sıfırlama gerçekleştiğinde görünümünden eski işaretlemeyi kaldırmak için render mantığı çimdik var.

+0

teşekkür ederiz. Ampul açık! – ctrlShiftBryan

İlgili konular