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

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

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

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

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

    最佳答案

    Marionette 允许在不关闭已经渲染的 View 的情况下显示区域中的 View 。您只需将 {preventClose: true} 传递给区域的 show() 方法。您仍然需要维护对集合 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/

    10-12 07:19