Domanda

Ho una lista di risposte come sotto:

Inserire l'immagine Descrizione qui

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?

È stato utile?

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 eltagCode della vista genitore quando rendering 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;
  }
});
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top