2016-09-20 4 views
3

AngularJS Chrome開発ツールのタブ(私はAngularJS Batarang(安定版)を使用しています)。私は、このような評価はそんなに時間がかかる理由の質問ですAngular JS:なぜ{{objA.objB.date |日付: 'dd.MM.yyyy HH:mm'}}時間がかかりますか?

{{objA.objB.date | date:'dd.MM.yyyy HH:mm'}} | 20.1% | 1009ms 
{{objA.objB.date | date:'dd.MM.yyyy, HH:mm'}} | 22.8% | 1148ms 

(式が複数回呼び出された場合、評価時間が追加された)式を見た記述が評価する最高の時間を要し、次の行を持っていますか?

答えて

1

Angularは、何か変更があったときに、$ダイジェストサイクルごとに2回、すべての単一のフィルタ(日付フィルタを含む)を実行するので、Angularでは「通常」と思う。これはパフォーマンスに大きな影響を与えます。最初の実行は、変更を検出した$$ウォッチャからのもので、2番目の実行は、更新された値を必要とする更なる変更があるかどうかを確認することです。

あなたはDOMフィルタ変更することができる場合:あなたはそれを送信する前にデータを前処理するDOMにそれらを解析する前に、あなたのコントローラでフィルタを実行するために使用することができます$フィルタープロバイダーを使用する

{{objA.objB.date | date:'dd.MM.yyyy HH:mm'}} 

をこのビューは、DOMを解析してインラインフィルタの構文を理解するステップを回避します。

$scope.theDate = $filter('date')(objA.objB.date, 'dd.MM.yyyy HH:mm'); 
+0

したがって、すべてのフィルタが遅いと言うことを試みていますか? – Eugeny89

+0

本当に。しかし、それぞれのプロセスは同じです。つまり、多くのことに依存します。使用されるフィルターの量 – thepio

+0

私が言っていることは、AngularJSアプリケーションのパフォーマンスに多くのことが影響するということです。パフォーマンスが問題になる場合は、AngularJSアプリのパフォーマンスを改善する方法をGoogleに知らせることができます。多くの素晴らしい記事があります。 – thepio

関連する問題