Come ri-rendering parziale del modello in backbone?
-
21-12-2019 - |
Domanda
Ho una lista di risposte come sotto:
Ogni elemento dell'elenco è un modello backbone.
{
title: 'answer title...',
content: 'answer content...',
voteStatus: 'up'
}
.
Quando faccio clic su voto up-voto o down-vota, il voteStatus
del modello sarà cambierà, e questa voce di risposta viene ri-rendering.
Se c'è un'immagine in contenuto di risposta, l'immagine verrà rientrante anche, ma questo non è quello che voglio.
Come potrei rendering solo il pulsante del voto quando cambio voteStatus
?
Soluzione
Avere una sottoview all'interno del AnswerView
che è responsabile solo del rendering delle frecce di voto, VotingArrowsView
.Si inizializza questa sottoview all'interno della funzione initialize
di AnswerView
e quindi premere il el
della sottoview a el
tagCode della vista genitore quando render
ing La vista genitore:
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;
}
});
.