9

我有一个如下的答案列表:

在此处输入图像描述

每个列表项都是一个主干模型。

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

当我单击赞成或反对投票时,模型voteStatus将发生变化,并且此答案项将重新呈现。

如果答案内容中有图片,图片也会重新渲染,但这不是我想要的。

当我刚刚更改时,我怎么能重新渲染投票按钮voteStatus

4

1 回答 1

7

在你的内部有一个子视图AnswerView,它只负责渲染投票箭头,VotingArrowsView. initialize您将在函数中初始化此子视图AnswerView,然后el在父视图中将子视图添加到elrender视图:

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;
  }
});
于 2014-04-14T16:42:51.593 回答