【问题标题】:Reversing $index when listing items in reversed order以相反的顺序列出项目时反转 $index
【发布时间】:2014-09-28 16:35:21
【问题描述】:

我偶然发现了这篇关于如何反转数组显示的帖子,当我尝试这样做时效果很好。 angular ng-repeat in reverse

但是...然后我列出的项目是可编辑的,当我反转数组时,$index 不会被反转,所以当我编辑列出的 1 个项目时,编辑发生在另一个包含正确索引的项目中。

那么我如何确保我的 $index 也被反转了呢?

所以代码看起来像这样

<form action="" method="post" autocomplete="off" ng-controller="itemCtrl">
 <input type="text" name="createitem" ng-model="item" />
 <button ng-click="addItem(item)">Add item</button>
 
    <ul>
       <li ng-repeat="item in items | reverse">
            <h2>{{item.title}}</h2>
        </li>
    </ul>
</form>

var itemApp = angular.module('itemApp', []);

itemApp.filter('reverse', function() {
 return function(items) {
  return items.slice().reverse();
 };
});

itemApp.controller('itemCtrl', function ($scope) {

            $scope.items = [];

            $scope.addItem = function(item){
                $scope.items.push({
                    title: item
                });

            };

【问题讨论】:

  • 根本不使用索引,而是传递数组元素本身。或者在范围内反转数组,然后对其进行迭代,而不是在数组的反转副本上进行迭代。
  • 是的,这就是我一直在尝试做的。你能提供一些概念的示例代码吗?显然到目前为止我还没有成功:-/.
  • 不要使用过滤器,用它来初始化作用域内的数组:$scope.items = items.slice().reverse();
  • 这就是我试图做的。但是当我这样做时,当我编辑列表中的项目时,$index 就会混乱。
  • 是的。一定是你的代码有问题。但是你没有分享它的任何一行。那么我们能提供什么帮助呢?

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


【解决方案1】:

这是我正在使用的。 您只需将数组长度减去当前的$index

{{myArray.length - $index}}

【讨论】:

  • 其实是{{myArray.length - $index - 1}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多