所以我有一个数组,我正在使用ng-repeat来渲染,但我想反转这个列表。以前我使用过这个答案得到的过滤器:angular ng-repeat in reverse
但现在我收到一个错误:“TypeError:Object#没有方法'slice' 在Scope。“我不确定这是因为AngularJS的新版本还是我遗漏了什么。
这是我的过滤器代码:
.filter('reverse', function () {
return function(items) {
return items.slice().reverse();
};
这是我在div中查看的代码:
data-ng-repeat='feed in feeds | reverse'
答案 0 :(得分:16)
要使数组反向渲染并按'id'排序,这应该有效:
data-ng-repeat="feed in feeds | orderBy:'id':true"
请告诉我这是否适合您。
答案 1 :(得分:11)
这有点棘手,但是对于所有有兴趣在没有创建新的谓词函数和/或修改数组等的情况下反转数组的人...
ng-repeat="feed in feeds | orderBy:'':true"
或
ng-repeat="feed in feeds | orderBy:'-'"
<强>说明强>
如果你将第二个参数留下一个空白字符串,那么Angular将按照数组(索引)的默认顺序排序,最后添加true
将启用Angular&#39;的reverse
参数。 orderBy
答案 2 :(得分:4)
请使用反向直接使用Java脚本切片功能:
data-ng-repeat="item in items.slice().reverse()"
答案 3 :(得分:3)
单一饲料的结构是什么?看起来你可以使用角度内置的滤镜来按照你想要的方式进行排序。例如,如果字段“id”是在数组中提供“order”的,那么您可以这样做:
data-ng-repeat='feed in feeds | orderBy:id'
如果你想要反转,你只需:
data-ng-repeat='feed in feeds | orderBy:id:reverse'
这有意义吗?不确定您是否需要自己的过滤器。如果是这种情况,可能尝试调试(即写入控制台或其他方式)以查看实际传递的内容。如果它不是数组,那就是你的问题,否则请尝试这样做:
return Array.prototype.slice.call(items).reverse();
如果其中任何一个适合您,请告诉我们!
答案 4 :(得分:1)
希望这能解决您的问题
data-ng-repeat='feed in feeds.reverse()'
答案 5 :(得分:0)
一种解决方案,它不对数组进行排序,但只复制并反转它: {{1}}
答案 6 :(得分:0)
实现AngularJs逆转的另一种替代方法是
<div ng-repeat="item in items | orderBy:'$index':true">
<code>{{item.id}} - {{item.name}}</code>
</div>