Sencha Touch 2アプリを最適化するときに、この問題に何度も直面しました。
DOMを軽量に保つ必要があることは明らかです。私のアプリケーションには、上記のExt.TabBar
とメインが含まれていますExt.Container
。ビューから別のビューに切り替えるたびに、現在のビューを削除して、そのコンテナに新しいビューを追加するだけです。
ただし、問題は、データをカスタマイズしたビューがいくつかあることです。つまり、HTMLコンテンツ、フィルタリングされたストアレコードなどの内部データがあります。メインコンテナからそれらを削除するときに、どういうわけかそれらの「状態」をグローバル変数に保存したいと思います。たとえば、次のようになります。詳細のある商品を使ったコマースアプリ。メインコンテナから詳細パネルを削除するとき、私は次のようなことをしたいと思います。
var saved_detail_panel = mainContainer.getActiveItem();
それができれば、後でその詳細パネルをメインコンテナーに戻したいときに、次のように簡単に使用できます。
mainContainer.add(saved_detail_panel);
何度も試しましたが、まだうまくいくものが見つかりませんでした。
どんな助けにも大いに感謝します。ありがとうございました。
更新:このコードをコントローラーのイベントハンドラーに配置すると:
var temp = Ext.create('taxi.view.location.LocationPanel', {showAnimation: null});
taxi.main_container = temp;
それはうまく機能しますが、パフォーマンスは良くありません。私がやりたいのは、次のように、 app.jsで1回だけ作成することです。
launch: function(){
var temp = Ext.create('taxi.view.location.LocationPanel', {showAnimation: null});
};
これはコントローラーでのみ使用してください。
taxi.main_container = temp;
初めて動作します。しかし、2回目は、次のエラーが表示されます。
Uncaught TypeError: Cannot call method 'replaceCls' of null