カレンダーをレンダリングするバックボーン ビューがあり、それが各日のサブビューをレンダリングします。毎日、単一のモデルと、その日を選択または選択解除する単一のクリック イベントがあります。日付を選択するとモデルが保存され、選択を解除するとモデルが破棄されます。
ビューのモデルが破棄されると (日付の選択が解除されたため)、日付が再選択された場合にカレンダーの日付のコレクションに新しいモデルを保存する方法がわかりません。ビューはモデルについてのみ認識し、コレクションについては何も認識しません。モデルが破棄されたときに、新しいモデルの作成と日付ビューへの添付をカレンダー ビューで処理する必要がありますか? または、日付ビューをコレクションに渡して、独自に行う必要がありますか? または、より良い解決策はありますか?
わかりやすくするために、コードの一部を次に示します。
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();
}
}
});
助けてくれてありがとう!