2013-12-09 11 views
5

Kukla Bileşik Görünümüne atanan modelin getirilip getirilmesinden sonra, bir Gidonlar şablonu güncelleştirmesinde bir veri alanı oluşturulmaya çalışılıyor ancak sayfadaki HTML güncellenmiyor.Model getirildikten sonra verileri Backbone ve Marionette ile Handlebars şablonunda nasıl güncellerim?

Benim kod şöyle görünür:

Modeli:

B.Page.Model = Backbone.Model.extend({ 
    url: function() { 
     return 'my/resource/'; 
    }, 
}); 


Görünüm:

B.Page.CompositeView = Backbone.Marionette.CompositeView.extend({ 
    template: Handlebars.compile(templates.find('#my-template').html()), 

    initialize: function(options) { 
     _.bindAll(this); 
     this.model.fetch(); 
    }, 
)}; 


Şablon:

<script id="my-template" type="text/x-handlebars-template"> 
    Date: <span id="my-data-field">{{data}}</span> 
</script> 

Ben kaynak kontrol ettikten ve data saha seti ile doğru JSON dönmek. Ayrıca, model görüşe geçiyor.

Bunun, verilerin alınmasından sonra çağrılmamasının render işlevinden kaynaklandığından şüpheleniyorum; Ancak, nasıl yapılması gerektiğine dair geri bildirim almak istiyorum.

Bunu yapmanın iyi bir yolu nedir?

Teşekkürler!

EDIT: Bu CompositeView, onunla ilişkili bir Koleksiyona sahip (uygun olayı tetiklediğimde gayet iyi sonuç veren). Sorunun bulanıklaşmasını önlemek için kodun bir kısmını bilerek bıraktım.

+1

Yeniden oluşturulduğundan emin misiniz? Güncelleme etkinliğini, görünüm oluşturma yöntemine bağlamanız gerekebilir. –

+0

Tam olarak doğru. Çok teşekkürler! –

cevap

3

CompositeViewCollectionView'dan beri geçerli olduğundan, yalnızca toplama olaylarında varsayılan olarak yeniden oluşturur. sizin modeline değişiklikleri nedeniyle işlemek yeniden yapmak için, senin CompositeView böyle bir şey yapabilirsiniz:

initialize: function(){ 
    this.listenTo(this.model, "change", this.render); 
} 
+0

Teşekkürler. Kullandığım gerçek sözdizimi 'this.model.on ('change', this.render)' dır, fakat aynı kavramın olduğu açıktır. –

+0

Evet, aynı kavramdır, ancak küçük farklılıklar vardır: Bkz. [Burada] (http://stackoverflow.com/questions/14041042/backbone-0-9-9-difference-between-listento-and-on) örnek. –

1

Tüm kukla görünümleri modelinde geçirilen bağlı bir modelEvents nesnesi var. Böylece, kabul edilen yanıtı, başlangıçta el ile bağlamak yerine,

'u temizleyerek temizleyebilirsiniz.

İlgili konular