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にはいくつかの要素が含まれていますが、そのうちの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に「再親化」/「再接続」するように指示します。つまり、要素を新たに見つけます。

より良いアイデアはありますか?

4

1 に答える 1

0

Backbone でネストされたビューをレンダリングするための適切なパターンについては、次の投稿を参照してください。

于 2013-02-02T06:06:37.487 に答える