【问题标题】:Switching views with backbone使用主干切换视图
【发布时间】:2012-02-12 17:22:13
【问题描述】:

我正在寻找使用backbone.js 切换视图的最佳模式

假设我有一个这样的基本 DOM 结构:

<div id="header">Some fixed content</div>
<div id="mainContainer"></div>
<div id="footer">Some other content</div>

我有两个视图“viewOne”和“viewTwo”,我想在 mainContainer 中交替显示。

路由器应该是这样的:

routes: {
    'one': 'pageOne',
    'two': 'pageTwo'
},      
pageOne: function() {
    viewOne.render();
},
pageTwo: function(){
    viewTwo.render();
}

我应该在哪里将 view.el 添加或删除到 DOM? 在视图之间切换的最佳模式是什么?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    我将使用负责呈现其子视图的更高级别的视图(附加到#mainContainer)。根据您的描述,您的视图差异太大,无法考虑根据某些条件使用单个视图渲染它们,而且我认为拥有视图的层次结构树总是更干净,因此渲染整个页面基本上是对顶部的调用-级别视图的 .render() (委托给子级)。

    您的主容器级视图可以公开两个函数,比如 renderPageOne 和 renderPageTwo,这就是路由器必须知道的全部内容。在这些函数中,您可以跟踪要渲染的子视图,并调用 this.render() 来清除当前内容(在主容器 el 上使用 jQuery 的 .empty()),并插入正确的子视图的顶部元素( .el)。

    【讨论】:

    • 我同意这个答案的想法,但我不会为此使用主干视图。我写了一篇文章,解释了我如何使用“区域经理”lostechies.com/derickbailey/2011/12/12/… 处理这个问题
    • @Derick:有趣的概念。与我对更高级别视图所做的类似,尽管它不一定是视图。您博客上还有许多其他有趣的 Backbone 帖子!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多