2016-08-18 10 views
0

devツールを使用して、Ionic 1アプリ(角1. *)のプロファイリングを行ったところ、多くのDOMが分離されていて、パフォーマンスが遅くなっていたことがわかりました。&メモリが増えました。コントローラ&ディレクティブで分離されたDOMを削除するにはどうすればよいですか?

私はプロファイリングを行った&は、それが分離domの増加につながる見た。 googlingの後、私は$ destroy &のクリーンアップアイテムを使用する必要があることを発見しました。私は多くのカスタム指示文&を持っています。

私は

elem.on('$destroy', function() {    
       elem.off(); 
       $log.info('Inside destroy..' + elem); 
      }); 

      scope.$on('$destroy', function() { 
       scope = {};     
       $log.info("In destroy of:" + scope); 
      }); 

私はコントローラからのDOMまたは範囲の要素を削除するにはどうすればよい、私はそのようなコードを知っているが、ディレクティブでちょうどのelemカスタムディレクティブのためにこれを使用。破壊のためにコントローラのDOM要素にアクセスする方法

答えて

0

実際に見ているのは、そのcachingメカニズムのために、イオンのデフォルト動作です。

デフォルトでは、パフォーマンスが向上するようにビューがキャッシュされます。ビューが から離れてナビゲートされると、その要素はDOMに残され、そのスコープは が$ watchサイクルから切断されます。 がすでにキャッシュされているビューにナビゲートすると、そのスコープが再接続され、DOMに残っていた既存の 要素がアクティブビューになります。これもまた は、以前のビューのスクロール位置を維持することを可能にする。

ビューごとに無効にする場合は、<ion-view cache-view="false">属性を設定できます。また、$ionicConfigProvider.views.maxCache(0);を介してグローバルに行うこともできます。

+0

私はcache-view = "false"を作成するとDOM要素をどのように削除するのですか?キャッシュビューはすでに偽です。 –

+0

キャッシュがfalseに設定されていると、自動的に削除されます。 chrome開発ツールでそれを確認しましたか?それはまだ表示されますか?どのイオン版を使用していますか? – radyz

+0

私はIonic 1.3を使用していますが、多くのカスタムディレクティブとコントローラーを使用していますが、削除されていません。それらは分離されたDOMとして表示されます –

関連する問題