我的 Backbone 应用程序中有一个电子邮件视图。它目前在中实例化view
我的控制器的动作。它有点像这样:
routes: {
'email/:id': email
},
//...
email: function (id) {
var email = new Email({
id: id
});
this.emailView = new EmailView({
model: email
});
email.fetch();
}
现在的问题是,如果我访问一封电子邮件,然后访问另一封电子邮件,我最终会创建两个单独的电子邮件EmailView
s。这意味着,例如,删除链接EmailView
绑定到两个单独的Email
模型,因此单击删除将删除两者(这不是一件好事)。
我正在寻找两种解决方案。在其中之一,我会缓存EmailView
,并更新其模型。那么问题是我必须重新绑定events
in EmailView
.
另一个解决方案是创建一个新的EmailView
就像我现在一样,但解除旧的束缚EmailView.el
替换之前的事件。
我以正确的方式处理这件事吗?有没有更好的方法来处理这种情况?提前干杯。
为每个模型实例创建一个单独的视图实例。每次您访问新电子邮件时,请丢弃旧视图并使用新电子邮件实例创建新视图。
如果我猜的话,您可能拥有的是左侧的列表视图和右侧的编辑器。您从左侧列表中选择电子邮件,并且希望电子邮件正文显示在右侧。
您确实需要大约 5 个视图类。
PageView
has_one EmailCollectionView on left
has_one EmailEditorView on right
EmailCollectionView
has_many EmailSummaryViews as vertical list
EmailEditorView
has_one EmailView centered
当您单击电子邮件集合视图时,您会触发一个事件
由 Email EditorView 拾取,它丢弃了 EmailView 的旧实例
并呈现新版本的 EmailView
无论如何,类似的事情
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)