Angularjs ng重复中的反向列表
所以我有一个数组,我正在使用ng repeat渲染,但我想反转这个列表。之前我使用了一个过滤器,我从这个答案中得到: 但现在我得到了一个错误:“TypeError:Object#没有‘slice’方法” 我不确定这是因为AngularJS的新版本还是我遗漏了什么 这是我的筛选代码:Angularjs ng重复中的反向列表,angularjs,angularjs-ng-repeat,angularjs-filter,Angularjs,Angularjs Ng Repeat,Angularjs Filter,所以我有一个数组,我正在使用ng repeat渲染,但我想反转这个列表。之前我使用了一个过滤器,我从这个答案中得到: 但现在我得到了一个错误:“TypeError:Object#没有‘slice’方法” 我不确定这是因为AngularJS的新版本还是我遗漏了什么 这是我的筛选代码: .filter('reverse', function () { return function(items) { return items.slice().reverse(); }; 这是我从div内部查
.filter('reverse', function () {
return function(items) {
return items.slice().reverse();
};
这是我从div内部查看的代码:
data-ng-repeat='feed in feeds | reverse'
单个提要的结构是什么?看起来你可以从角度使用内置的过滤器来按你想要的方式排序。例如,如果字段“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();
让我知道,如果这些工作为你 要使数组按“id”反向渲染和排序,应执行以下操作:
data-ng-repeat="feed in feeds | orderBy:'id':true"
如果对你有效,请告诉我
供您参考:希望这能解决您的问题
data-ng-repeat='feed in feeds.reverse()'
这有点棘手,但对于所有有兴趣在不创建新谓词函数和/或修改数组的情况下反转数组的人来说
ng-repeat="feed in feeds | orderBy:'':true"
或
解释如果将第二个参数保留为空字符串,Angular将按照数组(索引)的默认顺序进行排序,在末尾添加
true
将启用Angular的reverse
参数orderBy这是一种不排序数组,但只复制和反转数组的解决方案:
ng repeat=“items中的item | orderBy:'[]':true”
请直接使用Java脚本切片函数,反向如下:
data-ng-repeat="item in items.slice().reverse()"
另一种实现AngularJs反转的方法是
<div ng-repeat="item in items | orderBy:'$index':true">
<code>{{item.id}} - {{item.name}}</code>
</div>
看起来feeds不是数组…我正在使用firebase将本地$scope.feeds对象绑定到后端。因此项可能未定义。请检查此项并返回项目,不进行修改或不返回任何内容我对javascript和angularJS都很陌生,因此如果我不能更具体地说明我正在处理的类型,我真的很抱歉,因为坦率地说,我不太确定!但我真的很感谢迄今为止我得到的帮助。feed的结构如下:feedid:{id:'id of user',meta:'some description',name:'name of user'}当一个feed被一个用户发布到底部时,我希望它呈现在顶部(想象一下twitter feed)。我使用的是Angular 1.13.15,带有一个post范围变量=[{title:'one',upvots:500},{title:'two',upvoates:400}]和似乎数据ng repeat=“post in posts | orderBy:upvoates:reverse”不起作用,有什么建议吗?您的建议还会对数组进行排序,这在OP的问题中不是期望的效果完整的解决方案是
orderBy:'[]“:true
,因此有0个谓词,且顺序保持不变,只有反转的hanks!我正在寻找一种方法来反转默认顺序。”——“对我有效。完美..谢谢…:)我将避免使用从DOM调用的两个函数,因为如果列表越来越大,DOM渲染时间可能会非常长。如果您必须这样做的话。”走这条路,然后在你的JS代码中做这个反转。尽管在下面的其他答案中列出了内置的angularjs选项。
<div ng-repeat="item in items | orderBy:'$index':true">
<code>{{item.id}} - {{item.name}}</code>
</div>