我使用此指令,迭代数组“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="...">
标签。只要在上述结构中没有显示这些图像,我怎么能阻止这些图像加载?
提前多多感谢!
答案 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>