0

私はいくつかの異なるビューを取得しましたが、それらは主に(レイアウト-コンポーネント、レイアウト、メインビュー)のように構築されています。

異なるビューを切り替えると、ページ全体を再レンダリングする必要があります。

少なくとも「ウィンドウ」にレイアウトビューをキャッシュしてリロードしたほうがいいのではないでしょうか。

バックボーンビューのシングルトンパターンのようなものですか?

どうすればよいですか?単純です:

window.MainLayoutView || window.MainLayoutView = new MainLayoutView({ el: 'div.main' });

足りる?

他に考えなければならないことはありますか?

4

1 に答える 1

2

はい、もっと心配することがあります。あなたがこのようなことをするなら:

window.MainLayoutView.render();
$(x).html(window.MainLayout.el);
// And later...
$(x).html(someOtherView.el);
// And later still...
$(x).html(window.MainLayout.el);

window.MainLayout内部のすべてのイベントがなくなっていることがわかります。インスタンス化されたビューをキャッシュしてスワップインおよびスワップアウトする場合はdelegateEvents、ビュー階層の最後まですべてのイベントを再バインドするための呼び出しを調整する必要があります。

これら2つの例の動作を比較すると、問題がわかります。

通常、ビューをキャッシュしようとするのではなく、ビューだけをキャッシュremoveして、必要に応じて再作成します。

于 2012-07-22T19:41:46.023 に答える