2014-02-08 42 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的木偶應用程序的結構有很大的參考。

讓我知道你是否需要任何幫助。