ng-repeat中的反向列表

时间:2014-01-22 15:17:52

标签: angularjs angularjs-ng-repeat angularjs-filter

所以我有一个数组,我正在使用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'

7 个答案:

答案 0 :(得分:16)

要使数组反向渲染并按'id'排序,这应该有效:

data-ng-repeat="feed in feeds | orderBy:'id':true"

请告诉我这是否适合您。

供参考:http://jsfiddle.net/byizzy/pgPVU/3/

答案 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>