Pergunta

Eu tenho uma lista de respostas, como abaixo:

enter image description here

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?

Foi útil?

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 rendering 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;
  }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top