无限滚动和限制在ng-repeat中不显示元素

时间:2017-06-29 11:41:34

标签: angularjs infinite-scroll

通过在各个元素上切换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演示了问题

1 个答案:

答案 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规范动态创建的集合。