كيفية إعادة تقديم جزء من النموذج في العمود الفقري؟
-
21-12-2019 - |
سؤال
لدي قائمة الإجابات مثل أدناه:
كل عنصر في القائمة هو نموذج أساسي.
{
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;
}
});
لا تنتمي إلى StackOverflow