骨干视图结构:如何在布局中嵌套视图并委托事件

时间:2013-01-16 22:10:35

标签: javascript jquery backbone.js underscore.js

我是骨干的新手,我需要创建一个像这样的视图结构。

<header>
  <nav>...</nav>
</header>
<section id="content">
  here i want to dynamically render a sub-view with its own events..
</section>
<footer>...</footer>

当用户点击导航上的链接时,子视图会发生变化,并且它始终是一个不同的子视图(带有新闻的HomeView或用于身份验证过程的LoginView,例如...)

如何在不委托LayoutView上的所有事件的情况下实现这一目标?

1 个答案:

答案 0 :(得分:2)

使用Backbone.Router。而不是在视图中处理导航链接点击事件,而是将他们的href属性与路线匹配。

因此,如果你有这样的导航设置:

<nav>
  <a href="#home">Home</a>
  <a href="#login">Login</a>
</nav>

您的路由器看起来像这样:

Backbone.Router.extend({
  routes: {
    home:   'homePage',
    login:  'loginPage'
  },
  home: function() {
      $("#content").html(new HomeView().render().el);
  },
  login: function() {
      $("#content").html(new LoginView().render().el);
  }
});