3

我有一个应用程序,它有一个单页 main.html,以及一些主要的模板 admin.html、user.html 等。这个应用程序目前不是主干,只是它的一些部分(迁移缓慢)。

在管理页面中,我有用户的 BB 视图等。当用户选择 /admin/users 的路径时,例如,主模板加载器(非 BB)将 admin.html 加载到 main.html 中的标准位置,然后在 usersView 上运行 reset:

// pseudocode
function() {
  master.loadTemplate("admin.html").then(function(){usersView.reset();});
}

admin.html 包含几个元素,其中只有一个是 usersView 的模板。所以它可能看起来像:

<div id="admin-fragment">
  <div id="admin-users">
    <!-- template for usersView -->
  </div>
  <div id="admin-something else">
  </div>
</div>

所以当我加载包含 usersView 的脚本时,它看起来像:

UsersView = Backbone.View.extend({
  el: "#admin-users"
});

都还不错。这是问题所在。

有时,用户可能会在这个单页应用程序中转到其他地方,然后返回到 /admin/users。所以主模板加载器加载(有时会重新加载,取决于)整个 admin.html。但是 usersView已经附加到现有的(现在是孤立的)#admin-users。

我该如何解决这个问题?我看到两种方法,可以使用一些想法:

  • 当我选择 /admin/users 时,而不是 usersView.reset(),创建一个新的 usersView:

    // 伪代码 function() { master.loadTemplate("admin.html").then(function(){usersView = new UsersView();}); }

我担心的是绩效和管理受到打击。

  • 以某种方式告诉现有的 usersView “reparent”/“reconnect”,即重新找到元素。

有更好的想法吗?

4

1 回答 1

0

请参阅以下有关在 Backbone 中呈现嵌套视图的良好模式的帖子:

于 2013-02-02T06:06:37.487 回答