我有一个呈现日历的 Backbone 视图,该视图又为每一天呈现一个子视图。每天都有一个模型和一个单击事件,可以选择或取消选择这一天。如果选择了一天,则保存模型,如果取消选择,则销毁模型。
一旦视图的模型被销毁(因为取消选择了日期),如果重新选择日期,我不确定如何在日历日期集合中保存新模型。视图只知道模型——不知道集合。当模型被销毁时,日历视图是否应该处理创建新模型并将其附加到日期视图?还是应该将日期视图传递给集合并自行执行?还是有更好的解决方案?
为了清楚起见,以下是我的一些代码片段:
var CalendarView = Backbone.View.extend({
initialize: function () {
this.model.dates.on('reset', this.renderDates, this);
},
renderDates: function () {
// Loop through the number of days to display and create a view for each.
// Find a model for the date. If one doesn't exist, this returns a new model.
model = this.model.dates.completedOn(date.format('YYYY-MM-DD'));
view = new DateView({
model: model
});
$dates.append(view.render().el);
// End loop.
}
});
var DateView = Backbone.View.extend({
events: {
'click .date': 'toggleDate'
},
toggleDate: function () {
if (this.model.selected()) {
this.model.destroy();
}
else {
this.model.save();
}
}
});
谢谢你的帮助!