Backbone.js主细节场景

Backbone.js主细节场景,backbone.js,Backbone.js,我在backbone.js中实现了一个经典的主细节场景 目前,我不关心backbone.js的历史和导航部分,所以跳过它 我有一个GridView,其中所有模型都是从rest服务获取和显示的 我有一个DetailView(模式窗口),其中显示了从网格中选择的特定模型,其中显示了主网格视图中显示的更多字段 我已实施: 连接所有主干视图和路由器的主要应用程序 应用程序在加载的文档上初始化 主主干路由器(更像是一个经典的“控制器”),负责: 创建和销毁视图 获取和发布数据 向视图传递数据 协调

我在backbone.js中实现了一个经典的主细节场景

目前,我不关心backbone.js的历史和导航部分,所以跳过它

  • 我有一个GridView,其中所有模型都是从rest服务获取和显示的
  • 我有一个DetailView(模式窗口),其中显示了从网格中选择的特定模型,其中显示了主网格视图中显示的更多字段
我已实施:

  • 连接所有主干视图和路由器的主要应用程序
  • 应用程序在加载的文档上初始化
  • 主主干路由器(更像是一个经典的“控制器”),负责:
    • 创建和销毁视图
    • 获取和发布数据
    • 向视图传递数据
    • 协调意见和活动
现在,从gridView(主干收集)的rest服务返回的数据只是模型的部分数据

因此,要显示特定模型的完整细节,我必须再次从rest服务获取细节

从模型抓取最终导致模型与集合断开连接,并且对其进行的任何更新都不会反映在集合本身上,因此我必须再次刷新主视图以获取所有数据

销毁和重新创建细节视图有时会使其失去视图事件

这个场景的正确实现是什么?
我不完全理解在主干网中执行操作的最佳方式。

首先,我建议在“gridView”集合查询中返回模型的完整详细信息。这就解决了“收集断开”的问题

尽管您不必执行完整的集合加载—比方说,对整个集合执行完整加载是行不通的—细节太大了,例如,您应该能够将同一个模型从集合传递到详细视图中,测试它是部分加载还是完全加载,并为模型发出“fetch()”,返回完整数据-由于这与集合中的模型相同,因此应该对其进行更新。这有意义吗

另外,对于局部视图,我建议重用视图,并在视图中编写一个函数,允许您交换模型,特别是如果您正在设计仅激活一个局部视图

因此,总而言之:

  • 在应用程序启动时,加载一个gridView和一个detailView
  • 重构detailView以允许在其上设置模型。(detailView.setModel(…)
  • 当用户想要查看模型的详细信息时,使用上述函数将该模型传递到detailView
  • 如果模型未完全加载,则setModel方法可以转到并获取()其余的数据。您可以测试仅在完全加载时才存在的特定属性,或者在模型上设置属性以指示其是否已完全加载
  • 如果发现自己丢失了事件,请尝试在render()函数末尾调用delegateEvents(),以便重新绑定事件
  • 由于gridView集合和detailView中都使用了相同的模型,因此假设您正确响应了更改事件,那么所有内容都应该同步