gpt4 book ai didi

backbone.js - 更改 View 的模型时,是替换模型还是创建新 View 更好?

转载 作者:行者123 更新时间:2023-12-03 14:20:53 27 4
gpt4 key购买 nike

我的 Backbone 应用程序中有一个电子邮件 View 。它目前在 view 中实例化。我的 Controller 的 Action 。它有点像这样:

routes: {
'email/:id': email
},

//...

email: function (id) {
var email = new Email({
id: id
});
this.emailView = new EmailView({
model: email
});
email.fetch();
}

现在,问题是,如果我访问一个电子邮件,然后另一个,我最终会创建两个单独的 EmailView s。这意味着,例如, EmailView 中的删除链接绑定(bind)到两个单独的 Email模型,因此单击删除将删除两者(不是一件好事)。

我正在寻找两种解决方案。一方面,我会缓存 EmailView ,并更新其模型。那么问题是我必须重新绑定(bind) eventsEmailView .

另一种解决方案是创建一个新的 EmailView就像我现在一样,但解绑旧的 EmailView.el的事件之前替换它。

我会以正确的方式解决这个问题吗?有没有更好的方法来处理这种情况?提前喝彩。

最佳答案

为每个模型实例创建一个单独的 View 实例。每次访问新电子邮件时,请丢弃旧 View 并使用新电子邮件实例创建新 View 。

如果我猜的话,您可能拥有的是左侧的 ListView 和右侧的编辑器。您从左侧列表中选择电子邮件,并希望电子邮件正文显示在右侧。

你真的想要大约 5 个 View 类。

PageView
has_one EmailCollectionView on left
has_one EmailEditorView on right

EmailCollectionView
has_many EmailSummaryViews as vertical list

EmailEditorView
has_one EmailView centered

当您单击 EmailCollectionView 时,您会触发一个事件,该事件是
由 EmailEditorView 拾取,它丢弃了旧的 EmailView 实例
并呈现一个新版本的 EmailView

反正就是这样

关于backbone.js - 更改 View 的模型时,是替换模型还是创建新 View 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6859187/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com