Backbone.js 用于嵌套视图的木偶多个控制器

Backbone.js 用于嵌套视图的木偶多个控制器,backbone.js,marionette,Backbone.js,Marionette,我想知道如何在木偶中构造嵌套的控制器,我有这个层次结构 Menu (module) MenuController MenuItemCollectionView MenuItemView MenuItemDropdownController MenuItemDropdownLayout MenuItemDropdownSidebarView

我想知道如何在木偶中构造嵌套的控制器,我有这个层次结构

Menu (module)
  MenuController
    MenuItemCollectionView
        MenuItemView
            MenuItemDropdownController
                MenuItemDropdownLayout
                    MenuItemDropdownSidebarView
                    MenuItemDropdownContentView
基本上,我正在构建一个类似于polygon.com的导航菜单(当您将鼠标悬停在项目上时,会出现一个“下拉菜单”)

我看了很多木偶中“嵌套控制器”的例子,但运气不好,我的理解是,我需要为每个下拉菜单分离出一个控制器,也可能为每个MenuItemView分离出一个控制器。我所看到的类似例子是,“高级控制器”负责一切。也许我对木偶中控制器的理解是错误的,它们更倾向于路由目的

你们将如何构建它?你们是否让MenuItemView负责创建MenuItemDropdownController?(我觉得有点奇怪。)


或者我想的是错误的,或者应该把它分成多个模块?但我无法在脑海中真正理解这一点,因为我将模块视为单个项目,如“菜单”/“登录表单”等,而不是集合视图中的项目

您应该有一个控制器来处理菜单

这个案例应该可以使用复合视图进行管理,我在这里写了一篇博客文章,目的与此类似:

各种子视图的复杂性也可以通过使用木偶布局来处理

您可以在此处看到控制器处理布局的示例(请参见contactsListLayout):

基本上,布局是“在其各自区域中包含子视图的视图”


在构建上述应用程序的书中(可用)对处理嵌套布局进行了更详细的解释。

主干网和木偶网都对如何在路由之外使用控制器没有强烈的意见


实际上,控制器和路由用于将应用程序置于特定状态,在您的示例中,我认为您过度使用了控制器。在您的情况下,一个控制器就足以处理您的菜单。

鉴于上述示例,这些建议将使您受益匪浅。我经常发现,当您想要从(组合)数据的一般视图移动到专用视图时,很难决定是否分支到另一个专用控制器。以仪表板视图为例,它包含许多不同的数据。我可能会使用仪表板控制器来协调这一点,但当我想更详细地查看某个方面时,我可能会完全切换到另一个控制器。你是嵌套、分支还是反转?我倾向于每个“要完成的任务”使用一个控制器,这在概念上与创建的RESTful资源类似:每个“事物”使用一个资源。