我尝试在每个滚动事件中禁用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
变量)发生变化时,我只需要重新调整所选字母表。