كيفية إعادة تقديم جزء من النموذج في العمود الفقري؟

StackOverflow https://stackoverflow.com//questions/23031472

سؤال

لدي قائمة الإجابات مثل أدناه:

enter image description here

كل عنصر في القائمة هو نموذج أساسي.

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

عندما أقوم بالنقر فوق التصويت لصالح أو التصويت ضد، فإن النموذج voteStatus سيتم تغييره، وسيتم إعادة عرض عنصر الإجابة هذا.

إذا كانت هناك صورة في محتوى الإجابة، فسيتم إعادة عرض الصورة أيضًا، لكن هذا ليس ما أريده.

كيف يمكنني إعادة عرض زر التصويت عندما أقوم بالتغيير للتو voteStatus?

هل كانت مفيدة؟

المحلول

لديك عرض فرعي داخل الخاص بك AnswerView وهو المسؤول فقط عن تقديم أسهم التصويت، VotingArrowsView.يمكنك تهيئة هذا العرض الفرعي داخل ملف initialize وظيفة AnswerView ثم قم بوضع العرض الفرعي في المقدمة el إلى وجهة نظر الوالدين el متى renderفي وجهة نظر الوالدين:

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;
  }
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top