如何让AngularJS的ng-repeat从数组第5个元素开始渲染?
解决AngularJS ng-repeat从指定索引开始渲染的问题
嘿,这个需求很容易实现,我给你两种常用的方案,你可以根据自己的场景选择:
方案一:模板中直接使用数组slice方法
AngularJS的表达式支持直接调用数组的原生方法,你只需要把ng-repeat的数据源改成myarray.slice(4)就行——因为数组是0基索引,第5个元素的索引是4,slice(4)会返回从索引4开始到数组末尾的所有元素。
修改后的代码如下:
<div ng-repeat="item in myarray.slice(4)"> {{item.name}} </div>
方案二:控制器中预处理数组
如果不想在模板里写逻辑,也可以在控制器里提前处理好需要渲染的数组,把结果存到新的$scope变量里,这样模板会更简洁:
// 在你的控制器里添加这行代码 $scope.displayArray = $scope.myarray.slice(4);
然后模板改成:
<div ng-repeat="item in displayArray"> {{item.name}} </div>
额外说明:用limitTo过滤器的情况
如果你的需求刚好是取最后N个元素(比如这里刚好是最后5个),也可以用AngularJS内置的limitTo过滤器,传入负数表示从末尾取:
<div ng-repeat="item in myarray | limitTo:-5"> {{item.name}} </div>
不过要注意,这个方法和slice的区别:slice是固定从第5个元素开始,不管数组总长度;而limitTo:-5是永远取最后5个,要是数组长度变化,结果也会跟着变,根据你的实际需求选择就行~
内容的提问来源于stack exchange,提问作者yavg
相关产品推荐
相关产品推荐

