我尝试在每个滚动事件中禁用 ng-class reevulating。当我尝试实现一个地址簿时,这尤其痛苦,其中每个字母表都通过 ng-class 检查它是否处于活动状态:
<div class="btn-group">
<a class="btn btn-default" ng-class="{active: alphabetIsActive(a)}" ng-repeat-start="a in alphabet" ng-repeat-end>{{a}}</a>
</div>
字母表是:
$scope.alphabet = 'ABCDEFGHIJKLMNOPQRSTUXYZ'.split('');
和alphabetIsActive:
$scope.alphabetIsActive = function(letter) {
console.log('alphabetIsActive: ' + letter);
if (letter === 'C') {return true;}
else {return false;}
};
在每个滚动事件中重新调用上述代码是很疯狂的,即使在台式计算机上也有明显的延迟。
我知道这种ng-class="::{active: alphabetIsActive(a)}"
形式,但它完全扼杀了交互性,ng-class 永远不会更新。(甚至没有点击事件)。
$scope.mainList
就我而言,我只需要在列表(变量)更改时重新调整所选字母表。