Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng重复中的反向列表_Angularjs_Angularjs Ng Repeat_Angularjs Filter - Fatal编程技术网

Angularjs ng重复中的反向列表

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内部查

所以我有一个数组,我正在使用ng repeat渲染,但我想反转这个列表。之前我使用了一个过滤器,我从这个答案中得到:

但现在我得到了一个错误:“TypeError:Object#没有‘slice’方法” 我不确定这是因为AngularJS的新版本还是我遗漏了什么

这是我的筛选代码:

.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>