2016-09-20 84 views
3

在Chrome開發工具(我正在使用AngularJS Batarang(穩定))的AngularJS選項卡中。我有以下線,說明其看錶情接過來評價最高的時間(如果表達式打過幾次電話,評估時間增加)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是「正常的」,因爲Angular在每個消息週期運行每個過濾器(包括日期過濾器)兩次,一旦發生了某些變化。這會影響性能。第一次運行是從$$觀察者檢測到任何更改,第二次運行是查看是否還有需要更新值的更改。

如果你可以改變你的DOM過濾器:

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

使用$過濾器供應商,你可以將它發送給前進行預處理你的數據用來在控制器上運行的過濾器把它們解析到DOM之前該視圖避免瞭解析DOM並理解內聯過濾器語法的步驟:

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

因此,您試圖說所有的'filters'都死了? – Eugeny89

+0

不是。但他們每個人都經歷了同樣的過程。取決於很多事情,即。使用的過濾器數量。 – thepio

+0

我想我想說的是,很多事情都會影響到AngularJS應用程序的性能。如果性能成爲問題,您可以谷歌如何提高您的AngularJS應用程序的性能。關於這個問題有很多很棒的文章。 – thepio

相關問題