Backbone.js木偶路由器和嵌套视图

Backbone.js木偶路由器和嵌套视图,backbone.js,marionette,backbone-views,backbone-routing,Backbone.js,Marionette,Backbone Views,Backbone Routing,我正在深入研究整个“单页应用程序”和Backbone.js(特别是木偶)的内容。我正在开发一个相当复杂的应用程序。我想知道如何设置路由器来处理嵌套视图,以便也呈现“包含视图”。例如,假设我有一个管理部分,下面有一个用户部分。在“用户”下,我有“添加用户”和“搜索用户”选项卡 如果我选择了“添加用户”,我想象我的URL有一个片段“#admin/users/Add”。路由到具有“添加用户”窗体的视图。但是,如果您直接转到该URL,我想再次显示该表单,但也要突出显示顶部的导航栏(突出显示“Admin”

我正在深入研究整个“单页应用程序”和Backbone.js(特别是木偶)的内容。我正在开发一个相当复杂的应用程序。我想知道如何设置路由器来处理嵌套视图,以便也呈现“包含视图”。例如,假设我有一个管理部分,下面有一个用户部分。在“用户”下,我有“添加用户”和“搜索用户”选项卡

如果我选择了“添加用户”,我想象我的URL有一个片段“#admin/users/Add”。路由到具有“添加用户”窗体的视图。但是,如果您直接转到该URL,我想再次显示该表单,但也要突出显示顶部的导航栏(突出显示“Admin”)、特定于管理员的侧栏(突出显示我的管理员导航)和“Users”按钮。我需要整个HTML页面,而不仅仅是AddUserItemView


当页面第一次加载时(刷新或从书签加载),如何加载html结构和“父视图”?谢谢

我之前也有过同样的问题,我强烈建议您参与木偶布局、集合、合成视图和集合视图、区域以及如何在模板中显示内容

这并不难,因为你一直在阅读教程,我建议你阅读lostechis.com,这是一个非常有教育意义的博客,由木偶的创始人德里克·贝利(Derick Bailey)撰写,也是木偶的官方网站

这只是教育你自己做测试,当你想到一些问题时,搜索它,如果没有发现,不要怀疑,就在这里提问

对于侧栏和其他一些东西,您可以只使用jqueryui或Twitter引导,将它们与主干/木偶视图集成非常容易,但您只需阅读即可实现


你很幸运。

这是你需要考虑应用程序行为的方式:

  • 控制器需要创建视图实例并传入所需的数据(模型、集合等),然后在区域内显示视图
  • 路由器所做的唯一事情就是将URL与控制器操作相匹配(即,“如果在地址栏中输入此URL,应用程序应启动此控制器操作”)
因此,基本上,这是您的问题:您缺少一个控制器操作(例如,
MyApp.AdminApp.Users.New.newUser()
,它将呈现您想要的视图,然后您可以从路由器调用它…)

有一件事很有帮助(尽管与您当前面临的问题无关),那就是始终使用
trigger:false
(默认设置)调用
navigate
方法。这可确保应用程序正常运行,并且路由器仅限于将URL与控制器操作相匹配

关于菜单(突出显示当前条目),我将使其成为一个单独的木偶模块(),并有一个模型集合(不保存在服务器上)来列出菜单条目。这样,您可以通过将其model
active
属性设置为true(并在视图中选中该属性以高亮显示当前条目)来管理当前条目

这可能是一个很大的接受在一开始,但经过几个小时的工作与木偶这一切都是有意义的

(无耻的插件:我正在写一本关于木偶的书,让你从初学者到完全独立于木偶。在书中,我将介绍这类功能,特别是菜单管理和如何突出显示当前选项。如果你想查看,在和这本书中有一个免费的55页的示例(仍在编写中)位于)

检查此项: