2014-02-08 39 views
0

我有一个多面的问题木偶视图,控制器,路由器关系

我有以下成立。

使用:

  • 使用Requirejs
  • 使用木偶JS
  • 图片是我的想法粗略描述/意图

我有一个主要的 “路由器控制器” 来控制我的应用程序。该控制器可以使用代表站点“选项卡”/区域的控制器。所描绘的例子说明了我希望使用用户标签的指定控制器。

  • 我是否让用户控制器模型返回一个实例,然后定义或在主控制器中实例化?

-

  • 如果我现在去一个不同的标签,然后将不是实例是活动 还是?我想要关闭这个控制器关闭 的观点以及...我该怎么办?

Rough description

回答

1

认为你问两个问题:

  1. “?我怎样写我的子控制器,使其恢复一些有用的东西”
  2. “我如何管理子视图?”

要回答#1:

这是很容易在需要与定义指令:

define(["underscore", "jquery", "backbone", "marionette"], 
    function(_, $, Backbone, Marionette) { 

     var SubController = Marionette.Controller.extend({ 
      // your code here... 
     }); 
    } 

    return SubController; 
); 

正如你可以看到我们回到控制器对象引用。这是传递给后续的主控制器:

define(["underscore", "jquery", "backbone", "marionette", "path/to/SubController"], 
    function(_, $, Backbone, Marionette, MyController) { 

     var MacroController = Marionette.Controller.extend({ 

      initialize: function(options) { 
       this.subController = new SubController(); 
      } 
     }); 
    } 

    return MacroController; 
); 

要回答#2:

木偶给你很多的选项来管理的意见。由于我不确切知道你是如何构建代码的,所以很难直接回答这个问题。

通常你Marionette.Application将确定一些主要Marionette.Regions来管理应用程序的意见。如果你是用户标签结构整个应用程序,我会说这是正确的地方来管理这个。如果没有,Marionette提供Marionette.Layout对象。一个Marionette.Layout基本上是:

...的ItemView控件的混合动力和区域对象的集合。它们适用于渲染具有由指定区域管理器管理的多个子区域的应用程序布局。 Source

Marionette.Region对象采取的意见,并通过一些木偶结构自动神奇地处理事件关闭(大部分反正)等清理与视图相关联。

下面是从文档报价:

地区的用户提供一致的方法来管理,展示和在应用程序和布局密切的看法。他们使用jQuery选择器在正确的位置显示您的视图。

我正在建立这个我会避免主控制器,但是,可能会相应地结构本:

MyApplication 
    // TabsController manages the layout below 
    TabsController 
    // Layout will manage tab clicks and swapping out content 
    // in the tabsContentRegion 
    TabLayout 
     #tabsContentRegion 

我总是觉得David Sulc's bookthe accompaning repo的木偶应用程序的结构有很大的参考。

让我知道你是否需要任何帮助。