当更改视图的模型时,是替换模型更好还是创建新视图更好?

2024-02-16

我的 Backbone 应用程序中有一个电子邮件视图。它目前在中实例化view我的控制器的动作。它有点像这样:

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

//...

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

现在的问题是,如果我访问一封电子邮件,然后访问另一封电子邮件,我最终会创建两个单独的电子邮件EmailViews。这意味着,例如,删除链接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(使用前将#替换为@)

当更改视图的模型时,是替换模型更好还是创建新视图更好? 的相关文章

  • Backbone 对象渲染没有方法 apply - 绑定问题

    所以我在我的 AppView 中这样做 var flowerModel new app DataModel title flower values tulip rose dandelion dataToShow tulip rose dan
  • 如何通过 ID 以外的其他方式获取 Backbone.js 模型?

    Backbone js 通过 ID 获取模型的默认 RESTful 方法非常简单且直接 但是 我似乎找不到任何通过不同属性获取模型的示例 如何通过不同的属性获取 Backbone js 模型 var Widget Backbone Mode
  • 主干+rails TypeError:List.Header不是构造函数

    我正在尝试按照从该网站购买的教程进行操作 http www backbonerails com http www backbonerails com 我正在关注该系列的第五集 起床运行 第 1 部分 在视频的 46 52 左右 他有 lis
  • Backbone.js 中的分页

    我知道有一个组件可以实现此目的 但根据我所看到的 您必须创建一个扩展组件的新集合 还有另一种方法可以在主干中进行分页吗 我所需要的只是一个上一个和下一个按钮 将每页的项目限制为 12 个 我一直在 javascript 上创建它 对于生产环
  • Backbone:同一模型的多个视图模型

    新手骨干问题 背景 建立一个有骨干的购物清单 我有一个名为名称 描述和标签 数组 属性的模型类 我想基于此模型或此模型的集合创建两个视图 第一个视图将显示所有项目 如下所示 ul li h3 Item 1 Name h3 p Item 1
  • 在骨干模型上声明变量而不设置默认值

    我刚刚开始使用backbone js 我正在寻找一种在模型上声明字段而无需提供默认值的方法 它实际上仅供参考 以便当我开始创建实例时 我可以看到需要初始化哪些字段 用java之类的东西我会写 public class CartLine St
  • 使用 $.html() 时如何提高渲染性能

    我正在研究骨干demo app https jsfiddle net o75r7fu9 8 显示推文列表 当我用不同的数据替换所有 推文 时 我使用以下命令清除列表 html render function item table html
  • 如何在 Backbone.js 中加载具有外键关系的子模型?

    抱歉 如果这有点复杂 我仍在学习 Backbone js 加载和保存内部具有子模型的 Backbone 模型的正确方法是什么 我什至应该有子模型吗 例如 请原谅咖啡脚本 如果我有类似的东西 class Address extends Bac
  • Rails:backbone-on-rails gem-

    尝试按照 Ryan Bates Backbone js 教程构建抽奖应用程序 但我已经遇到了第一部分代码的问题 在 application js 的 init 函数中 他初始化了 Raffler 路线的新实例 该实例应该触发警报 主页 但我
  • Backbone.js / Marionette.js 中的路由 - 无主题标签、路由列表和子路由器

    我对 Backbone js Marionette js 中的路由有三个问题 1 如何获取我的应用程序路由器已注册的所有路由的列表 例如对于 Express js 在 Node js 中 它将是app routes 我尝试对 Backbon
  • 在backbone.js 中缓存集合?

    确保我的集合保持缓存并仅获取一次的最佳方法是什么 我应该实现某种缓存层吗 我应该分享Collection变量到需要的地方 我可以信任 jQuery 的 AJAX 设置吗 ajaxSetup cache true 现在看起来的基本集合 the
  • 渐进增强 - Node.js、Backbone.js

    Node js 服务器有两个角色 前缀为 api 的路由上的 RESTFul API 在其他路线上呈现网站页面 plans features terms 目前 我的所有页面都会呈现一个 正在加载页面 并与 Backbone router 启
  • 在主干/下划线模板中使用循环

    我有一个backbone js underscore js 模板 我将其输入到主干视图中进行渲染 视图传递一个包含数组的模型posts对象 我称之为post在模板中 Problem 当我尝试循环遍历数组的所有元素时posts 我收到一个错误
  • 如何在执行路由方法之前运行“中间件”函数?

    假设我有一个主干路由器 例如 routes homepage catalog id catalogPage catalog id products id2 productPage homepage gt doStuff catalogPag
  • 主干关系有许多最佳实践

    我是 Backbone 关系新手 我不确定使用 HasMany 的正确方法是什么 我有一个Parent模型有很多children 许多 是指成千上万的孩子 为了避免性能问题 我通过外键查询子项 child parent 1 而不是创建一个巨
  • MarionetteJS:应用程序区域与布局[重复]

    这个问题在这里已经有答案了 我正在阅读最新版本 2 3 0 的文档 它说应用程序区域现已被弃用 应用领域 警告 已弃用 此功能已弃用 而不是使用 应用程序作为视图树的根 您应该使用布局 看法 要将布局视图的范围限制为整个文档 您可以设置 它
  • 如何填充 Backbone.js 集合的 _byId 数组以便我可以在其上使用“get”?

    我有一个收藏 并且collection models返回模型数组 然而 当我打电话时collection get someId 这个id是模型的idcollection models数组 我得到undefined 看着collection
  • 简单的 Backbone 搜索页面 - 您会怎么做?

    我想使用 Backbone 实现一个简单的搜索页面 它不是单页应用程序 但仍然想使用 Backbone 构建我的 JavaScript 代码 搜索页面由搜索表单和搜索结果组成 搜索是通过 AJAX 完成的 并且必须保存在历史记录中 从历史记
  • Backbone Collection 和 Marionette CompositeView 中未定义的模型原型

    尝试从值列表填充集合时 我收到有关集合的错误model s prototype未定义 看着这个问题是关于类似问题的 https stackoverflow com q 16126195 1663942 我已经检查过模型确实已创建before
  • Backbone.Marionette 与 Backbone-Boilerplate

    我是 Backbone 的新手 正在尝试决定如何进行开发 目前我想知道人们什么时候会使用backbone marionette而不是backbone boilerplate 据我所知 Marionette 的规范性更强 但这是大多数人进行开

随机推荐

  • Hibernate子对象不保存

    我有一个员工和员工部门表 一名员工可以拥有多个部门 我已经在 MySQL 中定义了表并使用 JPA 生成了实体 package model import java io Serializable import javax persisten
  • 使用prepareForSegue作为按钮

    您好 我以编程方式创建按钮并将按钮连接到另一个视图 但我遇到了 segue 问题 我应该对故事板使用prepareForSegue方法 但我不知道互联网上有一些示例 但当我使用该示例时我会收到错误 请你帮助我 提前致谢 这是我的代码 创建按
  • Ruby,堆栈级别太深(SystemStackError)

    我有以下代码 class BookPrice attr accessor price def initialize price price price end def price in cents Integer price 100 0 5
  • 如何在 Qt 中设置适用于 Windows 的应用程序版本?

    When my application crashes the Windows Event Viewer always reports my application version as 0 0 0 0 I can t figure how
  • 访问第三方库中的 web.config 文件

    我正在编写一个 IHttpFilter 它需要位于一个单独的项目 这些都是 C 项目 中 以便在一组 ASP NET MVC 应用程序中使用 在 IHttpFilter 中 我必须确定 web config 文件中指定的一些内容 有没有办法
  • jQuery 追加元素(如果不存在),否则替换

    这是一小段代码 var el something find test if el length something append div class test somecontent div else el replaceWith div
  • 从 C 调用 PHP

    我正在尝试编写一个使用 PHP 作为脚本语言的应用程序 该应用程序是一个 CGI 处理程序 我希望能够从中调用 PHP 页面 我正在寻找可以让我在 C 程序中初始化 PHP 的代码 然后向其传递包含 php 代码的缓冲区或文件名 以供其解析
  • 数据库选项:为什么默认情况下“SET ANSI_NULLS OFF”对于新数据库是关闭的?

    使用 SSMS 2014 当我使用 SSMS 创建新数据库时 新数据库的默认设置有一些奇怪的地方 ALTER DATABASE del SET ANSI NULL DEFAULT OFF GO ALTER DATABASE del SET
  • 汇编器 64b 除法

    我需要一些简单的方法来在 x86 的汇编器中除以 64b 无符号整数 我的号码保存在两个 32b 寄存器 EDX EAX 中 我需要将结果放回 EDX EAX 因数为 32b 整数 请给一些代码 如果我正确解释你的问题 特别是这部分Fact
  • 发送 AVAudioRecorder 到服务器 iOS

    在过去的几天里 我试图将本地保存的声音记录上传到服务器 该服务器使用 php 文件处理它并将其保存到服务器 问题是我找不到办法做到这一点 录制声音 AVAudioRecorder 时 它保存在 NSTemporaryDirectory 中
  • 如何生成一个字符重复n次的字符串?

    我可以使用下面的代码来生成一个字符串 awk e BEGIN for i 1 i lt 10 i s s x print s xxxxxxxxxx 但它的复杂性与字符串长度是超线性的 time awk e BEGIN for i 1 i l
  • 标记未在子视图 IOS SWIFT 的谷歌地图中定位

    你好 我试图将地图放入子视图中 但是当我将谷歌地图放入子视图中时 它无法工作 标记和 GPS 坐标也无法工作 With Sub View Without Sub View SWIFT代码 import UIKit import Google
  • CMake 中的绝对路径与相对路径

    我一直在尝试构建一个简单的 C 库 在使用相对路径构建的过程中 CMake 无法正确配置我的链接库所在的位置 使用绝对路径配置成功 这是让我放弃使用 CMake 的一些原因之一 设置路径的推荐方法是什么 是绝对路径还是相对路径 为什么 gi
  • 如何在 Delphi 中递归创建文件夹?

    在创建可以通过给定路径递归创建文件夹的函数时需要一些帮助 C TestFolder Another AndAnother Delphi 函数 MkDir 返回 IOerror 3 MkDir C TestFolder Another And
  • 将证书从驱动程序导入 TrustedPublisher 以进行静默驱动程序安装

    我想安装 Balloon 驱动程序以在 KVM 中运行 Windows 无需用户任何交互 静默安装 我使用 powershell 将驱动程序中的证书提取到某个临时文件 然后使用 certutil exe 将其导入到 TrustedPubli
  • 在元素之间移动鼠标太快时的 jQuery 悬停问题

    我在页面上多次重复以下 html div class outer outer div class inner inner div div 并有这个 jQuery inner hide outer hover function e this
  • clang-tidy 配置中没有等效的“-line-filter”?

    我想配置我的 line filter 中的论点 clang tidy文件而不是生成命令的 cmake 源文件中 添加一个LineFilter文件的密钥只会给我一个 未知密钥 错误 这真的不支持通过配置文件吗 还有其他选择吗 不幸的是 这不受
  • 如何将 CSS 引用添加到 .NET SyndicatedFeed?

    我创建了一个包含许多 Syndicates 的简单 SyndicatedFeed 每个 SyndicateItem 都有 HtmlContent HtmlContent 是一个表 这显示正常 但现在我需要在桌子上添加最少的样式 填充 我相信
  • 将 Oracle 数据库从一台 PC 转移到另一台 PC 的最简单方法是什么?

    我想把我的oracle数据库转移到另一台电脑上 最简单的方法是什么 有没有 GUI 工具可以做到这一点 APC 的答案是逻辑传输的方法 如果您询问是因为您只想一次性传输到另一台电脑 那么 安装相同版本的Oracle 第二台电脑 创建相同的目
  • 当更改视图的模型时,是替换模型更好还是创建新视图更好?

    我的 Backbone 应用程序中有一个电子邮件视图 它目前在中实例化view我的控制器的动作 它有点像这样 routes email id email email function id var email new Email id id