Question

J'ai une liste de réponses comme ci-dessous :

enter image description here

chaque élément de la liste est un modèle de base.

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

Lorsque je clique sur un vote positif ou négatif, le modèle voteStatus sera modifié et cet élément de réponse sera restitué.

S'il y a une image dans le contenu de la réponse, l'image sera également restituée, mais ce n'est pas ce que je veux.

Comment pourrais-je simplement restituer le bouton de vote alors que je viens de changer voteStatus?

Était-ce utile?

La solution

Avoir une sous-vue dans votre AnswerView qui est uniquement responsable du rendu des flèches de vote, VotingArrowsView.Vous initialiseriez cette sous-vue dans le initialize fonction de AnswerView puis ajoutez le préfixe de la sous-vue el à la vue parent el quand rendering la vue parent:

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;
  }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top