Javascript 在主干网中,如何替换视图';一旦模型被破坏,它将是什么样的模型?
我有一个主干视图来呈现日历,它反过来呈现每天的子视图。每天都有一个模型和一个选择或取消选择日期的单击事件。如果选择了一天,则保存模型;如果取消选择,则销毁模型 一旦视图的模型被破坏(因为日期被取消选择),如果重新选择日期,我不确定如何在日历日期集合中保存新模型。视图只知道模型,而对集合一无所知。当模型被销毁时,日历视图是否应处理创建新模型并将其附加到日期视图?或者应该将日期视图传递给集合并自行执行此操作?还是有更好的解决方案 为了清晰起见,下面是我的一些代码片段:Javascript 在主干网中,如何替换视图';一旦模型被破坏,它将是什么样的模型?,javascript,backbone.js,backbone-views,backbone-events,Javascript,Backbone.js,Backbone Views,Backbone Events,我有一个主干视图来呈现日历,它反过来呈现每天的子视图。每天都有一个模型和一个选择或取消选择日期的单击事件。如果选择了一天,则保存模型;如果取消选择,则销毁模型 一旦视图的模型被破坏(因为日期被取消选择),如果重新选择日期,我不确定如何在日历日期集合中保存新模型。视图只知道模型,而对集合一无所知。当模型被销毁时,日历视图是否应处理创建新模型并将其附加到日期视图?或者应该将日期视图传递给集合并自行执行此操作?还是有更好的解决方案 为了清晰起见,下面是我的一些代码片段: var CalendarVi
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.
}
});
谢谢你的帮助 听起来你应该有这样的设置:
主干。所选日期的型号
。我们称之为M
Backbone.Collection
用于保存所有M
型号。我们称之为C
主干.View
,VM
,model
属性将是M
Backbone.View
,VC
,表示一个整月(或一年或任何你正在显示的时间),集合属性将是一个C
VC
可以侦听其集合上的'add'
事件,并在C
中添加新的选定日期时,在适当的位置插入VM
从C
中删除M
也相当简单。(如果有)。因此,要取消选择日期,只需销毁模型。VC
可以监听其集合上的'destroy'
事件,根据需要清理VM
及其整体显示
通过这种方式,您可以将大部分时间花在与收藏交谈上,以管理您选择的日期,其他一切都可以通过响应适当的事件来进行整理
下面是一个快速的“n”脏演示,它应该向您展示这些部件是如何组合在一起的:
var DateView = Backbone.View.extend({
events: {
'click .date': 'toggleDate'
},
toggleDate: function () {
if (this.model.selected()) {
this.model.destroy();
}
else {
this.model.save();
}
}
});