我有一個包含兩件事情的角度範圍:AngularJS性能:如何只更新我知道需要更新的範圍?
- 一個巨型表用10k行,需要一個第二渲染在它上面以固定覆蓋標題欄
- 一些小的額外信息
根據您向下滾動頁面/表格的距離,我必須更新標題中的一個小信息位;你可以把它看作是一個%計數器,你已經滾動了多少。
爲了得到當前滾動位置,我已經寫了指令(你也可以找到它here):
app.directive "setWindowScroll", ->
restrict: "E"
scope:
setVariable: "="
link: (scope) ->
$(window).scroll ->
scope.$apply ->
scope.setVariable = $(window).scrollTop()
我的問題是,這使得在表中各地滾動U * nsuably慢 * 。這是因爲我用我的指令寫入的可讀性是在範圍內的額外信息中,並且改變這似乎導致角度變髒 - 當調用我的$apply
時,檢查整個表的變化。
我知道這個滾動不會改變我的表中的任何內容,並且想要限制我的$apply
影響我網站的標題部分。
如何讓角度不是髒檢查表?
不得不在新窗口中打開一個滾動條來獲取Firefox中的滾動條:http://run.plnkr.co/4CAAfTuXNmgfGdql/ – 2013-05-02 15:02:27
新窗口鏈接不適用於我。 [This](http://beta.plnkr.co/45gKhAIt0DrozS7f0Bz2)和http://run.plnkr.co/plunks/45gKhAIt0DrozS7f0Bz2/。 – nh2 2013-05-03 01:31:20
感謝您解答這個問題的出色答案。我把我的頭文件放到它自己的範圍內,並且確實使用'$ digest'而不是'$ apply'修復了我的問題。然而,你最後說的話是非常正確的 - 無法使用任何*調用'$ apply'的東西不可行,而且非常有限。由於我的表大多不會改變,我會嘗試在瀏覽器中呈現表,但沒有數據綁定(通過在創建後分離觀察者,編寫自定義的'ng-repeat'類指令或使用更原始的,僅用於表格的非綁定模板引擎)。 – nh2 2013-05-03 01:55:56