単一ページの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にはいくつかの要素が含まれていますが、そのうちの1つだけが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に既に接続されています。
これを解決するにはどうすればよいですか?私は2つの方法を見ます、いくつかのアイデアを使うことができます:
/ admin / usersを選択したときにusersView.reset()の代わりに、新しいusersViewを作成します。
//擬似コードfunction(){master.loadTemplate( "admin.html")。then(function(){usersView = new UsersView();}); }
私の懸念は、パフォーマンスと管理の打撃です。
- どういうわけか、既存のusersViewに「再親化」/「再接続」するように指示します。つまり、要素を新たに見つけます。
より良いアイデアはありますか?