我的应用程序有一个单页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。
我该如何解决这个问题?我看到两种方法,可以使用一些想法:
而不是usersView.reset(),创建一个新的usersView:
//伪代码 function(){ master.loadTemplate(&#34; admin.html&#34;)。then(function(){usersView = new UsersView();}); }
我担心的是绩效和管理层。
有更好的想法吗?
答案 0 :(得分:0)
有关在Backbone中呈现嵌套视图的良好模式,请参阅这些帖子: