2014-04-12 24 views
8

Ben cevaplar listesi aşağıda gibi olması:Modelin bir kısmı omurgada nasıl yeniden işlenir?

enter image description here

her liste öğesi bir omurga modelidir.

{ 
    title: 'answer title...', 
    content: 'answer content...', 
    voteStatus: 'up' 
} 

Ben oyu-yukarı veya aşağı-oylama, model en voteStatus değişim olacak tıklayarak

ve bu cevap öğe yeniden işlemek olun.

Cevabın içeriğinde bir resim varsa, resim de yeniden oluşturulacak, Ama istediğim bu değil.

Yalnızca voteStatus değiştirdiğimde nasıl oy düğmesine yeniden sahip olabilirim?

cevap

7

AnswerView numaralı kitabınızın içinde yalnızca bir oylama okunu, VotingArrowsView görüntülemesinden sorumlu bir alt görünümünüz var. Sen AnswerView ait initialize işlevi içinde bu subview başlatmak ve sonra da üst görünümü en elrender ana görünümü ing için Subview en el prepend olacaktır: Bu iyi çalışır

var AnswerView = Backbone.View.extend({ 
    initialize: function(options){ 
    this.template = _.template($('#answerTmpl').html()); 
    this.votingArrowsView = new VotingArrowsView({ model: this.model }); 
    ... 
    }, 
    render: function(){ 
    this.$el.html(this.template(this.model.toJSON())); 
    this.$el.prepend(this.votingArrowsView.render().el); 
    return this; 
    }, 
    ... 
}); 

var VotingArrowsView = Backbone.View.extend({ 
    initialize: function(options){ 
    this.template = _.template($('#votingArrowsTmpl').html()); 
    this.listenTo(this.model, 'change:voteStatus', this.render); 
    }, 
    render: function(){ 
    this.$el.html(this.template(this.model.toJSON())); 
    return this; 
    } 
}); 
+0

, teşekkür alot! – Robin

+0

Ama başka bir sorum var, bence voteButton'un tıklama etkinliklerini (oylama ve oylama) 'AnswerView'den' VotingArrowsView''e taşıyabilirim. Bunu yaptığımda ve düğmeyi tıkladığımda işe yaramıyor. Olay dinleme bozuk gibi görünüyor. Bana nedenini söyleyebilir misin? – Robin

+1

"Bu", "thisDelegateEvents();", "render" iken "VotingArrowsView" içinde kullanıyorum. Hepsi tamam! teşekkürler :) – Robin