Frage

Ich habe eine Antwortliste wie unten:

enter image description here

Jedes Listenelement ist ein Backbone-Modell.

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

Wenn ich auf „Up-Vote“ oder „Down-Vote“ klicke, wird das Modell angezeigt voteStatus wird geändert und dieses Antwortelement wird erneut gerendert.

Wenn der Inhalt der Antwort ein Bild enthält, wird das Bild ebenfalls neu gerendert. Dies ist jedoch nicht das, was ich möchte.

Wie könnte ich die Abstimmungsschaltfläche einfach neu rendern, wenn ich sie gerade ändere? voteStatus?

War es hilfreich?

Lösung

Haben Sie eine Unteransicht in Ihrem AnswerView das ist nur für die Darstellung der Abstimmungspfeile verantwortlich, VotingArrowsView.Sie würden diese Unteransicht innerhalb der initialisieren initialize Die Funktion von AnswerView und stellen Sie dann die Unteransichten voran el zur übergeordneten Ansicht el Wann rendering der übergeordneten Ansicht:

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;
  }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top