【发布时间】:2015-07-10 09:26:54
【问题描述】:
可以使用ng-repeat来实现如下编译的DOM:
<div class="container">
<!-- ngRepeat item in items -->
<div ng-repeat="item in items">Item 1</div>
<!-- end ngRepeat: item in items -->
<!-- ngRepeat item in items -->
<div ng-repeat="item in items">Item 2</div>
<!-- end ngRepeat: item in items -->
<!-- ngRepeat item in items -->
<div ng-repeat="item in items">Item 3</div>
<!-- end ngRepeat: item in items -->
<div class="wrapper">
<!-- ngRepeat item in items -->
<div ng-repeat="item in items">Item 4</div>
<!-- end ngRepeat: item in items -->
<div ng-repeat="item in items">Item 5</div>
<!-- end ngRepeat: item in items -->
</div>
</div>
即将最后 n 项包裹在另一个元素中。
这似乎是一个奇怪的请求,我知道使用两个 ng-repeat 指令来实现这一点很简单。但是,它必须是单个 ng-repeat,以便我可以将项目移入和移出包装器,而无需从 DOM 中添加和删除它们(以here 所述的方式)。
我试图通过给.wrapper 元素overflow:hidden 并使用javascript 为子元素的top 位置设置动画来实现新闻提示样式的滚动效果。老实说,我宁愿根本不需要包装元素,但我不确定是否有任何其他方法可以实现我需要的滚动效果。也许操纵clip 属性来实现效果可能会奏效,但我不完全确定。
所以可以将包装元素应用于ng-repeat 中的某些项目?
【问题讨论】:
-
你能用 $last 来实现你想要的吗? docs.angularjs.org/api/ng/directive/ngRepeat 或检查 $index?
-
我确实尝试过将
$index和ng-if结合起来,但没有成功。例如<div class="wrapper" ng-if="$index===5">,然后是</div ng-if="$last">,但ng-if指令并非设计为那样工作,也不喜欢它。
标签: javascript css angularjs