Como re-renderização parcial do modelo na espinha dorsal?
-
21-12-2019 - |
Pergunta
Eu tenho uma lista de respostas, como abaixo:
cada item da lista é a espinha dorsal do modelo.
{
title: 'answer title...',
content: 'answer content...',
voteStatus: 'up'
}
Quando eu clique em para cima-votar ou votação, O modelo de voteStatus
será mudança, e esta resposta do item a ser re-processado.
Se há uma imagem na resposta de conteúdo, a imagem será re-render muito, Mas não é isso que eu quero.
Como poderia eu só re-compor o botão de voto quando eu acabei de mudar voteStatus
?
Solução
Ter uma visualização secundária dentro da sua AnswerView
que é responsável apenas pela prestação do voto setas, VotingArrowsView
.Você seria inicializar esta visualização secundária dentro da initialize
função de AnswerView
e, em seguida, acrescente a visualização secundária do el
para o pai do modo de exibição el
quando render
ing view pai:
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;
}
});