通过在各个元素上切换bool来过滤ng-repeat中的元素。
username
我的问题是,如果我应用某个过滤器,应该显示的第一个元素是列表中的数字659。 如果我没有向下滚动以使numberToDisplay高于659,则列表中不会显示任何元素。 numberToDisplay的初始值为35,并按此递增。
<div class="message-list" infinite-scroll="loadMore()" infinite-scroll-distance="1" infinite-scroll-parent="true">
<div ng-repeat="powerplant in powerPlantFilter = (selectablePowerPlants | filter:searchString | limitTo: numberToDisplay) track by powerplant.ID">
<div class="message" ng-show="powerplant.IsSelected === false && powerplant.IsInSegment === false">
...
</div>
</div>
</div>
如何解决此问题?
JsFiddle演示了问题
答案 0 :(得分:2)
我找到了你的问题。
这是一个有效的jsfiddle:https://jsfiddle.net/3Lsu2ojz/
你的问题是你用ng-show而不是过滤器..
ng-show可以理解为&#39; put display:none!important;如果条件&#39;
,请在此元素上因此,它仍将在无限滚动指令中考虑,因为元素实际上在这里并且limitTo实际上是它的工作。
您可以使用自定义过滤器:
$scope.searchString = {'ShowMe': true }
诀窍。
另请考虑使用此语法而不是您的语法:
powerplant in powerPlantsFilter = ( selectablePowerPlants |
filter:searchString |
limitTo: numberToDisplay) track by powerplant.ID"
其中powerPlantsFilter不是范围内的集合,而是由limitTo和filter规范动态创建的集合。