[英]Angular ui-grid : Method injected inside header of data grid is being called for each data cell rendering
為每個數據單元格渲染調用注入數據網格頭部的方法,並且在我們進行水平或垂直滾動時也會調用。 為了重現這個問題,我在這里附上了 plnkr 鏈接。 http://plnkr.co/edit/ZW43LsiLY7GdnX6XEOgG?p=preview , http://plnkr.co/edit/3E8HTz4Z2daGqRh1WHtx?p=preview ( <div class="ui-grid-top-panel" style="text-align: center">{{grid.appScope.letter()}}</div>
,嘗試排序,水平或垂直滾動)。
例如:下面是標題單元格視圖模板,我們injected {{ grid.appScope.getHeaderLetter( col.name, $parent.$index )}}
並且當我們進行水平或垂直滾動或在初始單元格渲染時 getHeaderLetter正在為每個數據單元調用方法。 換句話說,如果我們有 100000 個單元格,那么方法將被調用 100000 次。 我想我在用例方面遺漏了一些重要的事實。 我非常感謝您對此發表評論。
----標題定義----
<div class="ui-grid-top-panel ui-grid-top-panel-single" id="{{'ui-grid-index-' + col.name }}" style="text-align: center">
<div class="ui-grid-alphbet ui-grid-alphbet-first">{{ grid.appScope.getHeaderLetter( col.name, $parent.$index ) }}
</div>
.
.
.
more code
我在這里問了同樣的問題...... https://github.com/angular-ui/ui-grid/issues/4250 ,但沒有得到任何答復。
這就是角度臟檢查的工作方式。 您對此無能為力。 盡量不要在這些函數中放置長時間運行的操作。
這個怎么樣:
$scope.letterFn = function () {
console.log("CHANGE LETTER")
return i;
}
$scope.letter = $scope.letterFn();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.