Backbone.js 木偶区域与布线

Backbone.js 木偶区域与布线,backbone.js,marionette,backbone-views,Backbone.js,Marionette,Backbone Views,我正在使用LayoutView以表格形式显示集合。当用户单击tr时,我将CompositeView替换为使用相同区域显示详细信息的ItemView。除了“后退”按钮的功能被破坏外,其他功能都可以正常工作。是否有办法捕获返回事件并切换视图 或者我应该使用两个视图并传递模型id,然后重新绘制模型?但问题是额外的请求,我会丢失表的筛选和排序值,除非我使用本地存储。包含更多代码会更好,但无论如何,我会尝试为您的问题提供一些指导 为了避免两次获取数据,您可以在“父”组件中保留一个公共对象,例如在路由器中

我正在使用LayoutView以表格形式显示集合。当用户单击tr时,我将CompositeView替换为使用相同区域显示详细信息的ItemView。除了“后退”按钮的功能被破坏外,其他功能都可以正常工作。是否有办法捕获返回事件并切换视图


或者我应该使用两个视图并传递模型id,然后重新绘制模型?但问题是额外的请求,我会丢失表的筛选和排序值,除非我使用本地存储。

包含更多代码会更好,但无论如何,我会尝试为您的问题提供一些指导

为了避免两次获取数据,您可以在“父”组件中保留一个公共对象,例如在路由器中

 var theObject;
 var router = Marionette.AppRouter.extend({
   routes: {
    "routeA/:id": "goToRouteA",
    "routeB/:id": "goToRouteB"
   },
   goToRouteA: function(id) {
     MyRegion.show(new myLayout({
       model: this._getCommonObject(id)
     }));
  },
  goToRouteB: function(id) {
     MyRegion.show(new myLayout({
       model: this._getCommonObject(id)
     }));  
  },
  /*Return the common object for the views*/
  _getCommonObject: function(id) {
    theObject = (theObject && theObject.get('id') == id) ? theObject : MyApp.request('getTheObject'); 
    return theObject;
  }
});
通过这种方式,可以在不丢失信息的情况下保持对同一对象的引用


您只需确保在不需要删除对象以避免保留旧信息时删除该对象,例如区域关闭事件。

能否附上一些代码?