我使用一個<tbody>
內嵌套ng-repeat
生成動態內容的表(該表的內容是由後臺發送,是不可預測的)角NG-重複靜態內容(性能問題)
由於這表已經在一個自己使用ng-repeat
的指令中,如果我想引起任何改變,我可以用一個新的id請求一個新表。
問題是,當這個表大約有1000行長,或者如果我在界面中加載了多個表時,一切都會變得遲緩。
出於測試目的,我創建的表HTML這樣的:
for(var line = 0; line < $scope.content.tableBody.length; line++){
testTable += "<tr>"
for(var cell = 0; cell < $scope.content.tableHead.length; cell++){
testTable += "<td style='background-color: WHITE'>"
testTable += $scope.content.tableBody[line][$scope.content.tableHead[cell]].value
testTable += "</td>"
}
testTable += "</tr>"
}
和使用ng-bind-html
來證明這一點。性能差異巨大。當然,我不想放鬆角度之間的所有緩解(如ng-class
,ng-style
,ng-if
),但似乎所有由ng-repeat
生成的範圍都會導致性能下降。我試圖用一個綁定::
,track by $index
等,但沒有成功。
是否可以使用ng-repeat
,並且在加載所有內容後,只需將其內容設爲「靜態」即可? (與我的範圍,$ watcher等)
這是角1個缺點之一:因爲它是高層次的,它的速度慢......我不相信還有很多工作要做,在這裏,除了切換到角2或React :) –
如果列表是靜態的,請使用一次性綁定。它極大地提高了性能。使用它就像'
' –是的,一次性綁定有幫助。另外,你可以嘗試使用$ compile將指令呈現給靜態HTML。 – estus