javascript - 缓存 Marionette View 的最佳实践

标签 javascript marionette backbone-views

在我们正在开发的应用程序中,我们有一个 CollectionView,它的每个 ItemView 都包含一个指向项目详细信息页面的链接。此外,每个 ItemView 都包含一个复选框,因为可以在 CollectionView 中选择项目以对其执行批量操作。

当切换到 ItemDetails View 时,我们希望保持 CollectionView 的状态,理想情况下不必重新绘制它(有点像 GMail 从收件箱切换到邮件并返回时)。我们的解决方案是在两个不同的区域中呈现两个 View ,并在从一个 View 切换到另一个 View 时隐藏一个 View

我对这个解决方案的困惑是

  • Marionette 似乎不适合这种用途。
  • 对内存不是很友好,因为所有 DOM 元素都不会被删除。

是否有更好的解决方案来实现这个目标? 将状态存储在某处,关闭 CollectionView 并稍后重新绘制它是另一种可能的解决方案,但这是否意味着大量的计算开销? (我们非常害怕重绘 View )。

最佳答案

Marionette 允许在区域中显示 View ,而无需关闭已渲染的 View 。您只需将 {preventClose: true} 传递给区域的 show() 方法。不过,您仍然需要维护对 Collection View 的引用,以便您稍后可以重新显示它或自行关闭它。

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.region.md#showing-a-view

关于javascript - 缓存 Marionette View 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061423/

相关文章:

javascript - 如何在backbone.js中显示 View (在router.js中不显示警报)?

javascript - Backbone.js - 实现属于同一 View 的模板片段

javascript - 如何只调用一次 Backbone View 事件?

javascript - 如何在 JavaScript 中插入一大块 HTML?

javascript - 无法读取未定义的属性 'toString', 'isNan'

jquery - 使用 Marionette 处理 anchor 标记点击

javascript - 带有 subview 的 Backbone.Marionette View

javascript - 在初始化之前如何引用 javascript 窗口元素?

Javascript .length 和有类差异吗?

javascript - 在 HTML5 Canvas 上绘制拉伸(stretch)弧