Ang-directive使用ng-repeat,ng-show“显示更多”和延迟加载

时间:2014-12-12 06:11:41

标签: javascript angularjs directive ng-repeat

我使用此指令,迭代数组“myArr”,过滤一些条件。

<myDirective 
    myData='item' 
    ng-repeat="item in filteredArr = (myArr | filter:searchField | filter:checkboxFilter)" 
    ng-show="$index < visible" 
/>

这给了我两个问题,我想得到一些意见:

a)ng-show部分在那里,因为我有一个处理这个问题的条件:

<p>
    <a ng-click='visible=visible+10' ng-show='visible < filteredArr.length'>Show more</a>
</p>

为了显示或隐藏“显示更多”部分。我无法想出切换这个和/或物品本身的另一个想法。一旦我们开始,$ scope.visible在控制器内部设置为10。我无法使用limitTo,因为它不能让我确定是否有更多要显示,因为它当然会“切断”数组到设定的限制。

b)在指令内,模板打印

<img ng-src="..."> 

标签。只要在上述结构中没有显示这些图像,我怎么能阻止这些图像加载?

提前多多感谢!

1 个答案:

答案 0 :(得分:26)

使用ng-if代替ng-show

ng-show不同,falsey ng-if会从DOM中删除该元素。

编辑:

此外,您实际上可以使用limitTo过滤器,这会使您的代码更清晰:

<div ng-init="limit = 2">
  <foo ng-repeat="item in items | limitTo: limit as results"></foo>
</div>
<button ng-hide="results.length === items.length" 
        ng-click="limit = limit +2">show more...</button>

plunker